Porting ML/HPC applications to MN-Core (Have something you want to run on MN-Core? Bring it!)
About Me
My name is Yuta Nagahara, and I am a second-year Ph.D. student in the Department of Information and Communications Engineering at the Institute of Science Tokyo. My research focuses on accelerating computation through the design of hardware accelerators specialized for specific tasks. In particular, I have worked on sparse matrix processing, designing algorithms and hardware in an integrated manner, and carrying out the full pipeline from FPGA implementation to evaluation on actual hardware. Recently, I have also developed an interest in accelerators for DNN inference, working on optimizing computation and memory access, as well as exploring design methodologies.
Why I Applied for the Internship
I had long been interested in PFN, as the company has a strong track record of developing computing systems centered around MN-Core, where a high level of expertise is required across a wide range of domains from hardware to software. Since my own research is more hardware-oriented, I found it particularly appealing that I could gain practical insight into how knowledge and technologies in this domain are integrated into a complete system and how they contribute to overall performance. In addition, I was drawn to the opportunity to collaborate on research and development while receiving feedback from PFN employees with deep technical understanding, as well as to learn about team workflows and development practices. These factors strongly motivated me to apply.
What I Worked On During the Internship
Given my background in hardware accelerators for sparse matrix processing, I worked on accelerating sparse matrix–vector multiplication (SpMV) on MN-Core L1000. I began by learning the instruction set and architecture, and developed an understanding of how to program MN-Core through implementation at the assembly level. During this process, I reflected on the design intentions behind these components while also gaining valuable insights from discussions with PFN employees. After building a solid understanding of the system, I moved on to implementing SpMV. To maximize performance, I designed data layouts on memory and execution flows based on the architectural characteristics of MN-Core L1000—particularly its large-capacity, high-bandwidth memory—and the properties of its instruction set. Through this experience, I gained a deeper understanding of how hardware characteristics, including the instruction set, directly influence implementation decisions.
What I Gained from the Internship
One of the most valuable takeaways was learning how to approach optimization through discussions with PFN employees while implementing and improving performance on MN-Core. I was able to develop a clearer understanding of what aspects to focus on and how to think about implementation decisions when improving performance. In particular, through performance analysis, I learned how to identify bottlenecks by comparing measured performance with theoretical values derived from computational throughput and memory bandwidth, and by analyzing the causes of the gaps to determine what needed to be improved.
I also gained important insights into how to build an environment that maximizes the speed of learning as a team. Even small progress updates or early-stage ideas were encouraged to be shared as notes, and I was able to receive quick and valuable feedback from people with diverse areas of expertise. As a result, I was able to absorb knowledge at a much faster pace than I had expected. This experience made me realize that PFN’s high technical capability is supported not only by individual expertise, but also by a culture and system that enable the team to fully leverage it.
Who Should Apply?
The PFN internship is highly recommended for those who want to understand how the knowledge and research they have developed at university can be applied in real-world development. By working hands-on to implement and validate systems, and by continuously improving them through technical discussions based on results, you can significantly deepen your practical technical expertise. In addition, there are many opportunities to interact with experts from a wide range of fields, allowing you to naturally gain exposure to technologies you may not have encountered before. If you are eager to broaden your knowledge and take on new challenges in such an environment, I strongly encourage you to apply.

