13 Nov
|
GeoSoftware
|
Canada
13 Nov
GeoSoftware
Canada
GeoSoftware is a global leader in Geoscience Software and provides a comprehensive range of software solutions that support our clients to achieve their goals. Our tools help our clients to develop a better understanding of the subsurface, manage exploration and development risks, and quantify reserves more accurately with our advanced geoscience technology. Working at GeoSoftware is all about passion and sharing our ambition for ongoing technological innovation. Our people are our most important asset and developing our talents is a priority. As part of GeoSoftware, you will work with international and diverse teams of experts in an environment of excellence, which will enable you to create your own opportunities and realize your full potential. Job SummaryWe are looking for an experienced computational engineer to join our Digital Platform team. You would work on the numerical core of our geoscience software: algorithms that have been in production use across the industry for two decades, which we are modernizing into headless, independently testable, independently deployable components that run correctly and quickly across hundreds of cores. You would write the tests that show an optimized version still gives the same answer. A large part of it is finding the faster way: reading the literature, questioning an algorithm's formulation rather than only its implementation, and knowing when an order-of-magnitude gain is sitting in the mathematics rather than in the loop. The other part is working directly with subject matter experts—building quick prototypes with them, putting something in front of them within days, and iterating on it until the science is right, before any of it is hardened into production code. We are looking for a physics or geoscience background and solid Python alongside C++.
You would work in a small, senior, distributed team alongside platform and front-end engineers, and with geoscientists who use the results professionally every day. Duties and ResponsibilitiesAlgorithm Development and ModernizationSeparate established numerical code from the application framework it grew up in, producing headless, testable, independently deployable componentsWork inside a large, mature, sparsely documented C++ codebase and leave it better understood than you found itDefine each algorithm's interface-its inputs, outputs and parameters-precisely enough that the surrounding platform can validate, present and re-run it without knowing what the algorithm doesExpose C++ to Python through pybind11, with attention to memory ownership, the GIL and zero-copy array handling Research, Prototyping, and OptimizationInvestigate how an algorithm can be made substantially faster
- reformulation, better numerical methods, exploiting structure in the problem
- not only tuning the code that implements itFollow the relevant literature, and evaluate published approaches honestly against what we already haveBuild quick prototypes in Python with subject matter experts, iterate with them on the science, and only then decide what deserves to become production C++Profile and optimize: vectorization, cache behavior, memory layout, threading and choice of numerical libraryDecompose algorithms for parallel execution,
and reason rigorously about what that does to floating-point reproducibilityWork with the platform engineers on how compute is distributed and on the seam between native code and the execution layer VerificationBuild the regression harness that validates parallel and distributes output against the single-threaded referenceDefine and justify the acceptance tolerance for each algorithm familyWrite characterization tests before refactoring and regression suites that catch what code review will not Collaboration and DeliveryWork in short iterations with continuous integration, code review and acceptance criteria agreed before implementationWork with geoscience domain experts to confirm that a result is not only numerically equal but scientifically soundContribute to the technical direction of a small team, and write down the decisions that matter Skills and CompetenciesSkills:Strong modern C++ with real numerical computing experience-linear algebra, signal processing, transforms, optimization, or inversionStrong Python, including the scientific stack-NumPy, SciPy, and the array-programming idiom-and experience binding native code to itA physics, geophysics, or applied mathematics grounding and the ability to read a paper and implement what it describesSolid grounding in floating-point behavior, numerical stability, and error analysisParallel programming: threading, SIMD, and the trade-offs of data decompositionAbility to work productively inside a large, unfamiliar, poorly documented codebasePrototyping speed: able to get something working and demonstrable in front of a domain expert quickly and comfortable throwing it awayA test-first instinct and the patience to establish a baseline before cha
📌 Senior Software Engineer Eu Remote H/F (Canada)
🏢 GeoSoftware
📍 Canada