News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Lab Subforums proposal

Started by fearless, May 15, 2009, 09:57:57 PM

Previous topic - Next topic

fearless

Following from the discussion here (http://www.masm32.com/board/index.php?topic=9370.msg84909#msg84909 onwards) about ways to improve the lab and testing in general, i thought id categorize the first 10 pages of the lab to see how it might look if we had this in place. I may have missed a few posts, but generally the idea is to show how it could be made to look a bit more ordered. Some posts would fit into multiple categories of course, but what im showing is merely the basis of the idea or as a summary thread (ofc with post links attached if implemented). There could be many other categories and/or some of the below could be renamed, i'm sure you get the general idea.

Laboratory Categories:

- CPU, Code Execution & Code Timing
   Code timing macros
   Timings and cache
   Timings macro
   Quick CPU info based on CPUID
   Timings for AMD, P4, Core Duo
   Updated Intel' s Manuals (DR AGNER FOG' s comments would be highly appreciated)
   Code sizing macros
   Macros and assembly speed
   Calling bios from XP 64 driver
   Branchless Conditional Code
   An idea for realtime profiling
   
- Strings & string seaching
   InstrCi - case-insensitive string search
   Golden oldie BM algos written by Jeremy Collake
   String searching
   szLen optimize...
   lstrcpy vs szCopy
   IsBadReadPtr and strcopy routines
   Working with unicode string data
   safe_strlen,safe_strcpy
   Best way to convert hexadecimal coded string to binary string?
   Unicode string length
   Print Multi String Zero
   Follow on from Levenshtein - Soundex
   Improved CAT$ macro
   Basic emulation space$() macro.
   strstr rewrite / core 2 6400 issue
   Strange result with my StrCat function... Why ?
   szLeft and szRight
   Optimized UNICODE Conversion
   extended print macro

- Memory, Arrays & Sorting
   memcpy using the stack pointer register.
   LUT Optimization
   Idea for multithread memfill
   Fixed array test piece
   Dynamic string array benchmark
   Linked-List, Stack by x86 Assembly
   Test piece using the SafeArray system for a dynamic array.
   Dynamic string array
   Multithread mem fill try 2
   Dynamic array library, examples and benchmark
   ZeroMemory with SSE2
   Merge Sort
   ZeroMemory Speed Test!
   Memory faster than register - subtle optimization issue?
   protosort
   
- Base Conversion (Hex, Dec, Binary)
   Converting a decimal number to ascci (dwtoa)
   Binary to Decimal using multiply
   Float to string without fpu
   qwtoa using xmm registers?
   decimal as KiB,Mib,GiB etc.
   dwtoa
   Optimizing dw2hex_ex
   Bin$
   Faster Bin2ASCII
   masm.lib functions dw2ah and a2dw
   
- Maths & FPU
   Adding up fractions with FPU
   Fast SSE floor() function
   float$ macro and algo for testing
   MOVED: Finding Greatest Common Divisor (GCD)
   Fast SSE Ceil() Function
   UNSIGNED Integer square root problem
   Simple multiply algorithm.
   Fpu in C++
   Fibonacci Series
   Double check my floating point logic
   Odd or Even
   Changeing Radix
   Integer square root
   Factorial Program
   Dear Math and FPU-Experts - help needed!
   Strange FPU Command? Undocumented?
   Arbitrary-size integer addition
   Fast SSE truncate function
   Is Negative
   Assembly-time random number generator
   Float-to-half conversion
   64bit addition
   MODx and DIVx macros
   Integer vs FPU square root
   Sine in SSE2 vs. FSIN
   Fast Floating-Point to Integer Truncation
   Simply FPU 1.4 (Chm Format)

- Crypt/Decrypt, Code/Encode & Hashing
   Encryption DLL
   TEA (Tiny Encryption Algorithm) ASM Implementation
   Optimised MD5 File Checksum Routine
   MOVED: reverse CRC32
   Bitslice MD5
   
- Date & Time
   CCYYMMDD dword to Julian date conversion
   Day Of The Week Algo
   Faster FileTimeToSystemTime
   Bin2Time, Converts binary value to hours:min:sec.000
   Average milliseconds per character to Words Per Minute   
   
- Graphics
   Graphics
   Alpha blending
   Graphics again.
   Break & Bash - 3ds Model Loader
   3D Vector Normalize with SSE2
   3D_Core
   sDraw speed test in Vista
   Line function
   2D collision detection
   PutPixel Function
   Blending pixel function
   Directx drawtext
   Matrix and vector operations using FPU
   bitmaps scrolling

- Files, File Formats & Parsing
   Text File handler   
   Comma Seperated File (CSV) Component Extraction   
   XML Genius requred
   floppy IMG file backup.
   Doc Comment Parsing
   Command Line Parser
   XML Component (objasm32 version)
   XML Writer-Parser Source Code
ƒearless

jj2007

Looks convincing. There are a few items that do not fall under the category "speed", e.g. date & time, XML, and imho they could be moved to the Workshop. But let's hear the others :bg

dedndave

looks good fearless
i think an important thing is to get a feel for which instructions/sequences act very differently from one cpu to the next
for algos that behave more or less the same from one cpu to the next, it is a matter for optimizers
one of our goals should be to pick up where optimizers leave off
that is to make a reference for programmers who want to pick an algo that will
provide the best overall performance on a variety of cpu's,
as opposed to picking the one that performs best on their own machine



NightWare

hmm, it could boost posts, but it could also reduce them (i remember some changes on another forum...).

now, if it can avoid speed tests with string/stringci/bm search algos in the same test...  :bdg

dedndave

well - we need a wide variety of algos run on a wide variety of cpu's
i think it will be fun for everyone except the ones who have to collect and organize the data in presentable form
i also think it will be a good way to learn and share tips and tricks
along the way, we all get to write code that performs better on different machines
it would provide a service for members and non-members alike, one that has no equal anywhere

hutch--

hmmmm,

Hold your breath waiting. Seriously, additional fragmentation does not help, it just becomes another hinderance to finding and perhaps participating in technical threads. The "per topic" system works fine so if you have a topic "blitters" then any interested parties can post their variations of bit blit routines, same with string length algos, text formatters, parsers etc .... The range of possible categories for the LAB is almost infinite so I don't see the point of trying to pre-emp what will get posted in the future.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

FORTRANS

   Good point Hutch.  KISS.

Regards,

Steve N.

dedndave

perhaps we can still make the reference without changing the way it is posted
we just have to be smarter about collecting information
we can at least suggest they keep timing tests in the Laboratory
that will localize it for us

PBrennick

hmmm,

Is there a commiitee? Did not know that. There are s-o-o-o many things that would have to be categorized that it would be impossible to do, let alone maintain. There is already a SEARCH feature which allows a user to search for algos (there is no gaurantee that they will even be in the Lab). That is what I do. Even if you do not know the name of the algo, you can do a general search pertaining to the algo.

Also, there would absolutely be NO way to police it to make sure it is used properly and many will have differing ideas of where a particular algo would/should be placed in the first place.

Huitch, perhaps you should post more often because it is evident that people think you are bored.  :bdg

Paul
The GeneSys Project is available from:
The Repository or My crappy website

Vortex

The structure and the planning of the Masm Forum is OK. There is no need to modify it. An exception can be that a new assembler is introduced to the community.

dedndave

well, we (fearless, Jochen, and I) were talking about trying to organize the information
i don't think we need to modify the forum or make a committee, for that matter
the goal was to simply get algos run on a variety of different CPU's
the way it is, only those who are interested in a particular algo bother to look at the thread or run the test and post results
what is missing from that formula are the other CPUs (those that un-interested parties may have that the interested ones do)
let me give an example:
i have an algo i would like tested - say an array multiply
i have a few different versions of the algo that do the same thing
i create a thread and post the code
those who are interested in "array multiplication" look at and perhaps run the test
in this case, that may be 3 or 4 people (or even less - lol)
we only get to test the algo(s) on 3 or 4 machines - some of which may have the same CPU
it is hard to ascertain which algo method has "best overall performance" from such a limited pool
when, in fact, we have a nice assortment of CPU's available in the membership
not everyone is likely to be interested in array multiplication (i know i am not)

PBrennick

dedndave,

I see your point but any organization made is not likelly to stimulate additional postings. Personally, I am not in favor of restrictive algos at all. Algos should run on all machines. CPUID, for instance, is something I would never code into an algo. It can be very frustrating for a person to have something that works and then when they buy another computer it stops working. What happens next is we get vague postings that require effort to locate the problem. It is just a poor habit IMO. It is bad enough that no matter what is done in terms of optimizations, the results tend to be CPU specific. That is why I am not a fan of optimization. Given the fact that we have so much memory and space available on today's machines, it is no longer necessary except for certain time critical applications anyway.

Paul


Paul
The GeneSys Project is available from:
The Repository or My crappy website

dedndave

thanks for your input Paul
you never use CPUID ?
it has been supported since 486's
and - there is a way to see if the processor supports it prior to using it
if it is not supported, the programmer must find alternate methods of IDing the cpu
it struck me as odd because i just happen to be writing a program that uses CPUID - lol
but - that means that mmx and sse are out because they are not supported
myself, i try to stay under sse3 because there are so many processors still active that do not support it
of course, if a programmer wanted to get real busy, he/she could write a different routine for each level of support
like you say - that had better be a speed-critical part of the program to warrant all that effort

btw - what processor do you have that does not support CPUID ?
inquisitive minds need to know

hutch--

 :bg

Paul,

> Huitch, perhaps you should post more often because it is evident that people think you are bored. :bdg

That is the case from time to time but it has nothing to do with programming or this forum, its more from having too much to do and at times not wanting to do it all. I have just about finished the second stage of a complicated foundation in the kichen of my house, then there is the floor design where I have to fund the material then when thats finished I have to cut out and weld a few bits on my car to get it registered next time etc etc ....

Add this to the normal daily tracking of the forum, spam and member join maintainance and you will see that I actually get a lot done daily.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

PBrennick

Hutch,

I have a tendency to follow some of your alternate projects as many are interesting to me so I am well aware that no moss grows on your butt. I remember a project you were working on years ago which was the way I first met you as you needed help with some time intensive tasks. I have written a pretty kewl proggie that is used to examine stuff of that sort with exports, saves, etc. All parts of the data have been modulized into a DLL, etc. Just wanted to know if you still have an interest in that area. I can send you the sources if you are.

dedndave,
All my systems support CPUID. The thing is, though, I never program around what my systems can and cannot do. I program around the systems that may be used by people wanting to use my apps or learn from my sources. You need to expand your horizons if you wish to program for the community. Keep plugging away, though, you will eventually see my point.

Paul
The GeneSys Project is available from:
The Repository or My crappy website