CO-OP EXPERIENCE – 17 months (ATI & AMD)
5 months experience Software Engineer Co-op at ATI.
ATI Research,
62 Forest Street, Marlborough, MA 01752, (508) 303 3900, www.ati.com
ATI Research (Full-time Software - DirectX Drivers & Shader Compiler teams)
Develop DirectX10 Ref Rast shader (VS/GS/PS)
interpreter – connect to DX10 alpha MS Ref Rast code.
Use Ref Rast to compile HLSL (or DX10 Asm) into DX10 tokens (then strip
header info); use ATI code to convert DX10 tokens into DX10 disassembly and IL
tokens; send IL tokens to SC for machine-specific binary.
DX10 tokens input to DX10 interpreter.
Results are compared to other interpreters, which include GPU machine
level byte code interpreters and an intermediate shader language (IL)
interpreter. Random input is
consistently generated for comparison with other interpreters.
Code organized to easily merge with MS Ref Rast updates.
Improve existing shader interpreter code (not DX10).
Compare results for all interpreters each test run (“cycle”) instead of
at end (required break up run interpreter code into Init & RunCycle methods for
each interpreter). Refactor
interpreter code (includes: move run interpreter & interpreter utility code into
separate files; C++ wrappers for C code interpreters; share code in interpreter
class parent & shader class parent).
Find & fix minor interpreter bugs.
Integrate SoftIL (special case) interpreter with the
new changes and add improvements (to output results and doc).
Develop DX10 functionality tests to exercise
functionality of DX10 drivers (then integrate into func test framework).
Basic func tests included “return input" VS/GS/PS, and texture min/mag/mip
tests. Write using pre-release DX10
Ref Rast.
(Part-time after hours nights/weekends secondary job - assistance with X-Box 360
hardware testing)
X-Box 360 GPU chip testing and console testing (vary
settings such as clocks & temperatures & chip types to find pass/failure
results)
1 year experience Software Engineer Co-op at AMD, (SRD - Software R&D).
AMD, 5204 E. Ben White Blvd., Austin, TX 78741, (512) 385-8542, www.amd.com
AMD SRD DirectX (Performance, Multimedia) Co-op Software Engineer,
ScullyMark (DirectX 9.0 Vertex Shader performance benchmark):
C++ DX-9 VS (Assembly & HLSL) performance benchmark program to test AMD’s DX
software VS (PSGP). Allows scripting
and modular creation of DX VS app-level dll plug-ins, VS Asm/HLSL text files,
and test options files (specify meshes, vert batch size, num frames, etc).
Smaller projects… automate DX tests; data analysis for ScullyMark output; wrote
some VS Asm for benchmarks, simple managed DX tests/research (C#, windows
console scripting, Excel, C++, DX VS Asm).
AMD SRD BIOS Co-op Software Engineer,
BIOS AutoBuilder (prototype):
Automate nightly BIOS tests on a set of target hardware platforms.
Pull/Build current BIOS; Copy binary/etc to appropriate ABTT testing
control; Remote flash target platform BIOS; Run ABTT tests; Return results to
master control. Multiple ABTT test
suites run in parallel; fully automated nightly tests.
Control reports results of these tests (from the hardware “rack”) to the
BIOS team via email – PASS or FAIL or ERROR (and link to detailed log).
Software/hardware integration:
Software: C# and
.NET applications (Client on Master Control; Hosts on testing control systems).
Configuration files for each “test suite” (references to particular
scripts and local/remote file paths).
Console cmd batch files linked to automate each SourceSafe pull, BIOS
build, BIOS & hardware specific remote flash utilities, and ABTT tests.
Some ABTT scripts for coordination.
Hardware: Setup
and integrated two ABTT testing sites: 1 master control system, 2 ABTT testing
control systems, 2 KVM over IP and Remote Reboot Units, 2 target to-test
platforms, and 2 hardware-specific remote BIOS flash hardware.
AMD SRD BIOS Co-op Software Engineer, Austin, Texas (1/12/2004 – 5/21/2004)
Spring Term:
ABTT (Automated BIOS Testing Tool):
ABTT - graphical object-based scripting system/language for rapid dev of test
scripts; fast/easy to learn (compared to code scripts)
Primarily automates user actions (respond to screen images, enter keyboard/mouse
input, etc). Also interact with KVM
over IP hardware (file transfer, remote reboot, etc) and perform other
functionality (flow control, script modularity, screenshot logs, comments, etc).
Scripts are created in the graphical editor by inserting graphical “block”
objects, connecting outputs to inputs (flow control), and specifying properties
for each script “block”. Features
include robust editor (load/save, undo/redo, copy/paste, hotkeys, robust script
blocks, etc), simple user mode with script-specific options, debug/trace mode,
command-line batching capability, and mouse click/search screen capture utility.
Code designed for easy extension (such as new script “blocks”)
ABTT Documentation was created for 3 target audiences: script user (simple GUI;
and command-line), script developer, and application developer/maintainer.
ABTT was shared with other groups (including QA and BIOS
Implementation and code design - individual project.
Worked with 2 partners for requirements/goals, planning, documentation,
other issues (such as code design).
(C# and .NET, GDI+ 2D graphics, internal (AMD) API for mouse/keyboard actions
and image processing)
Courses in Software Development
* See transcript or
www.rit.edu/~pem1491/courses.html for full course listing
Computer Science General:
CS I-IV, Digital Design (CE),
Assembly (CE), Data Communications, Programming Language Concepts, Operating
Systems Scripting, Operating Systems, Intro to CS Theory
Software Engineering: Software Engineering, Professional Communications,
Software Verification & Validation, Engineering of Software Subsystems
Computer Science Specialized:
C# & .NET Programming, Database
Concepts, Scientific Programming,
Computer Graphics 1, Graphics Game Programming 2D, Graphics Game Programming 3D,
Computer Graphics 2 (“Image Synthesis”)
May also take before graduation:
Computer Animation (Algorithms & Techniques), Procedural Shading
Programming Languages and Major APIs
Most Significant:
C/C++, DirectX, MS VS .NET, Qt, C#, Java, Python, XML
Major Experience:
OO Dev/Design, Comp Graphics, Applications, Hardware Simulation (software for
hardware products), GUI, Automated Testing
Significant:
Qt testing, OpenGL, Assembly, Networking & Sound C/C++ APIs, Unix (BASH, sed,
awk, etc), SQL, Lisp, Prolog, Pascal, PHP/HTML, Adobe Flex (Flash)
Software Development Skills (Other than Programming
Skills)
SD Process and Design:
Planning, Requirements, Global Design, Detailed Design, UML (Visio, Rational
Rose), Sequence, Protocol, Network, Database (ER), UI Design,
Testing/Maintenance, Coding Standards, Code Doc, Presentations, User Doc,
Algorithms
Project Coordination:
SourceSafe/Perforce/CVS/RCS; FTP/web; Team (college & Co-op); Project
coordination & recruiting
Platforms Exposure:
Windows/NT/XP (console batch scripting), UNIX (emacs, console shell scripting,
X-win32, SSH, Telnet, etc), Solaris, Redhat, Mandrake, Gnome, KDE, CDE, Knoppix
RIT Project Examples
* See www.rit.edu/~pem1491/projects.php3 for links to more info,
screenshots, etc
“Mega Monkey Mayhem” (Team):
C++, DirectX-8.1. RIT
extra-curricular project (entered in IGF at GDC 2004 Student Showcase).
Complete graphics and game logic refactoring of isometric “Super IsoBomb”
into 3D. Implement: game logic
changes, graphical effects, particles, custom culling & drawing optimizations,
A* homing bombs, projectile bomb physics, camera views, GUI, more. Recruited and
organized contributions - all original content (art, textures, sound, music,
maps, GUI, and models). Console
style action cartoon monkeys theme.
http://www.rit.edu/~jpw9607/m3/index.htm
“Xundar” (Team):
3D game and engine – C++, DirectX-8, some windows, fmod sound system.
Technical features include: outdoor random terrain generation, indoor map
file dungeons generation, 1st & 3rd person movement cameras, culling and
optimization methods, collision detection, 2D elements (font engine, HUD),
textures, lighting, custom imported models, animation, particles, custom sound
effects and music, indoor item types with interactivity, and other special
effects. www.rit.edu/~pem1491/Xundar
“Super IsoBomb” Net (Individual): C++, DirectX-8.
Real-time net protocol design & implementation (using RakNet API) added
IP multiplayer to preexisting 2-player split screen local version.
Also 2D graphic and game logic features.
www.rit.edu/~pem1491/IsoBomb/
Tile Map Editor
Individual, extra-curricular, C# & .NET, dynamic Windows Form, map files for “Xundar”
dungeons and “Super IsoBomb” maps, design patterns.
Isometric Game (“Water Island”)
3-person, DirectX-8, DirectSound, C++, 2D action RPG, loads map file, displays
isometric tiles, 2D-collision detection, combat, bitmap text output, class
system design, animations, music, sound effects, levels.
Ray Tracer 2-person, OpenGL, C++, spheres, checkerboard floor,
lighting, reflection, refraction, shadows, post-process Tone Reproduction.
Drawing Editor Team Project,
Java, 2D shape graphics, design patterns, dev in stages.
Checkers Project Team Leader,
Java, GUI, TCP/IP, modular design, process in stages