title: 570

text:
This article delves deep into the dynamics of the Ethereum-based Non-Fungible Token (NFT) marketplace, tracing price movements through charts and offering insightful analysis on trends and future projections. By dissecting the Ethereum NFT price graph, we aim to equip investors, creators, and enthusiasts with the necessary information to navigate the ever-evolving NFT landscape effectively.
Ethereum’s Influence on NFT Valuation
Ethereum, as a pioneering blockchain platform for deploying smart contracts, has undeniably carved out a significant niche in the digital economy, particularly within the realm of Non-Fungible Tokens (NFTs). The valuation of NFTs minted on Ethereum is intricately tied to the platform’s native cryptocurrency, Ether (ETH). This connection is evident in the fluctuating price charts of Ethereum-based NFTs, which often mirror the volatility inherent to the broader cryptocurrency market. Analyzing Ethereum NFT price charts reveals patterns of significant highs and lows, correlating with Ethereum’s market performance, technological upgrades, and broader market sentiment toward NFTs and blockchain technology.
Trends in the Ethereum NFT Marketplace
The analysis of Ethereum NFT price charts over time showcases a number of noteworthy trends. Initially, NFTs experienced a dramatic surge in value and interest, attributed to a blend of novelty, the burgeoning art market on blockchain, and speculative investment. This period of rapid growth was marked by record-setting sales and an influx of artists and creators to the platform. However, as the market matured, volatility became a defining characteristic, with prices for even the most sought-after NFT collections experiencing significant fluctuations. This reflects not only changes in the broader cryptocurrency market but also evolving perceptions of value within the NFT space.
Deciphering Ethereum NFT Price Charts
Understanding the nuances of Ethereum NFT price charts requires familiarity with several key aspects. Firstly, supply and demand dynamics play a crucial role. Limited edition releases and unique, highly coveted pieces command higher prices. Secondly, community engagement and project longevity contribute to perceived value, influencing price trends over time. Additionally, external factors such as changes in Ethereum’s network fees or gas prices and regulatory developments can have an immediate impact on NFT transaction costs and market activity. By keeping abreast of these factors, stakeholders can better anticipate market movements and make informed decisions.
In conclusion, the Ethereum NFT price chart is a vital tool for anyone participating in the NFT ecosystem. It not only reflects past and present market conditions but also serves as a gauge for future trends. While the market is inherently volatile and influenced by a myriad of factors, careful analysis of price charts, coupled with a deep understanding of the Ethereum blockchain’s intricacies, can provide valuable insights for navigating the NFT landscape. As the market continues to evolve, staying informed and adaptable will be key to success in the dynamic world of Ethereum-based NFTs.


tier: polar

shelf: education

title: KRISTI MAXWELL’S MY MY

text:
KRISTI MAXWELL’S MY MY
Who We Are and How We Exist: A Review of Kristi Maxwell’s My My by Adam Yeich
Impressive and thought-provoking, Kristi Maxwell’s My My (new in May, 2020 from Saturnalia Books) enraptures readers as the writer examines the self, the self’s interaction with other humans, and human interaction with the bountiful beauty of nature—conjuring a world where “we’ve given tenderness away / to the language of meat” (4), where we’re “Turning our girls / into trash with our language” (56), and where “all of this having could lead to hating” (60). Maxwell’s poems are so rich and dense with language play and multiple levels of meaning, that they can be re-read almost immediately and still spark something completely new and splendid within the reader. Each return visit to the pages of My My leaves the reader pondering fresh possibilities.
Maxwell’s previous publications include six books of poetry: Bright and Hurtless (Ahsahta Press), Realm Sixty-four (Ahsahta Press), Hush Sessions (Saturnalia Books), Re- (Ahsahta), That Our Eyes Be Rigged (Saturnalia), and PLAN/K (Horseless Press). Her poems have appeared in Miracle Monocle, Bennington Review, Black Warrior Review, Boston Review, and others. She’s an assistant professor of English and an affiliate faculty member of the Women’s, Gender, and Sexualities department at the University of Louisville.
Throughout the book, Maxwell often uses the language of, well, language—speech, that most basic and necessary form of human interaction—as a metaphor for all the various forms of interaction that populate her book. Expressed in the description as “ecopoetic at its core,” the use of the natural world and the examinations of human interaction with the natural world are addressed throughout the work in magical and sometimes troubling ways. In the last poem of the first section of the book, “And the Dollars, Too,” Maxwell opens the poem with an image that takes a commonly held “beauty” and exposes its truth while also implying blame for the un-beauty of that same image. She writes “Among the irreconcilable things: the way pollution / amps up the beauty of a sunset soupy neon / toxic pink as if the sun were airbrushed onto the sky / waiting to be eclipsed by a couple’s ornate names” (14). In this moment, Maxwell has addressed a number of concepts, including the human folly of pollution, while also hinting at the reasoning behind the damage we’ve done. In the end, the narrator implies that humans treat nature as though it’s there simply to serve the whims of humanity.
Maxwell also examines multiple conceptualizations of the self. In one of my favorite poems in the collection, “Of the Technologies,” the narrator performs a kind of self-examination—expressing gratitude, desire, and growth. I was drawn most to the piece’s opening and closing. It opens, “To prove I am no robot, I tap bridges, I tap street signs, I tap ‘that ass,’ which is to say, I am colloquial, a colonist making do in a new colony of language” (23). The swift evolution of the self (from non-bot to colonist) in the line reveals an expansive knack for transmutation. This concept is again expressed in the closing image of the poem, “the cyst of a bud that ruptures into bloom.” Maxwell has a talent for bringing an image to life in the reader’s mind on a visual level, while simultaneously conjuring a rapid conceptual development on the page.
In terms of interactions between humans, one of the most powerful examinations in the book comes from the poem “Poem Starting with a Misreading of the First Line in ‘The Glass Essay.’” Maxwell writes, “Where is the power: seeing oneself / or seeing another That the mirror itself limits our conceptions / of empathy suggesting as it does that we can deposit ourselves elsewhere / cash in, cash out invest The terms already decided / Do you agree to the terms” (7). Here, Maxwell asks where power lies—whether it’s in how we view ourselves or in how we view others. Her mention of the mirror and empathy raises a question for the reader: does the way we view ourselves affect the way we view (and thus interact with) others? I can’t say I’d ever thought about it in quite that way, but once I read and re-read the poem, I realized that, for myself at least, ideas about myself and my place do indeed impact the ideas I have about others and how I interact with them, which was interesting for me consider.
Later in the book, Maxwell returns to this idea of interactions between people, this time looking at the way larger-scale interactions affect more personal interactions. Her narrator wonders “Who is ‘the company’ – commercial or intimate / Commercialized intimacy / I would rather not see you than look for you / The noise just another version of silence” (20). These lines leave much to be unpacked, but they raise important points about the commercialization of human interaction and intimacy. The word company is especially loaded in that it can stand for the company doing the commercializing or the company one keeps for various levels of social interaction and intimacy. The poem moves on from this image, leaving readers to ponder what that means for them. This moment is yet another example of Maxwell’s ability to show her readers new ways of seeing—a form of growth that appears to be a key theme throughout the book.
After traversing a wide variety of interactions, the book returns with more strength to its “ecopoetic core” near the end of the book where many of the poems focus around the natural world. Maxwell invites readers to “Grieve for the roses when the forests / are burning. O Rose thou art sick” (69). The image of the sick roses reads as yet another reference to pollution and the poisoning of the natural world, while the image of the forests burning calls forth the deforestation happening all over the world. Humans are, of course, at fault in both cases. A few pages later, Maxwell addresses climate change in the poem “On the Common Suffixes of Towns.” She writes, “in a time in which the Earth’s favored icebergs / seemed incapable of occupying the verb ‘to melt,’ a ville / took on age, like a child, thrilled, knowing not of any evil / concocted by progress” (72). The use of the image of melting icebergs will read as familiar to most readers, but Maxwell’s unique approach both refreshes it and calls attention to the larger issue. Even the most desensitized reader’s attention will be drawn back once more to the challenges at hand. The phrase, “concocted by progress,” is yet one more example of an instance wherein Maxwell’s narrator (and perhaps Maxwell herself, though who besides Maxwell could really say?) places blame for the tragic state of the natural world directly on humanity. We think only, she argues, for the ways in which nature directly benefits or pleases us.
In the final poem of the book, Maxwell addresses the destruction of the bee population. The poem “Without without” opens with, “In an inbox, bumblebees are dying / like lights in a light-soaked room in the midst / of an energy drought, power out / any moment, even the sun, a pimple on course / to be drained” (76). The poem—and thereby the entire book—closes on the ominous message that “The hive mind / no suitable asylum. The bees will not be last.” This poem is a dark and beautifully rendered commentary on the destruction of the natural world around us. The closing line reads as a call to action: “If you don’t stand up when they come for ‘them,’ who will be left when they come for you?” Maxwell’s reminder that the bees will not be the last draws our attention to the fact that further destruction will ensue. Readers must ask themselves, what will you do when the natural world is no longer suitable even for humans? It’s an exceptionally poignant message in the context of the COVID-19 crisis. Maxwell’s book asks readers to reexamine their actions and interactions—and the effects of both on the world around them.
My My is slated for release on Tuesday, May 5, 2020 with a cover-price of $16 USD. The book can be pre-ordered now from Amazon, Barnes & Noble, and most other online bookstores and retailers. This is one collection that readers will regret missing out on—especially in these days of quarantine and social isolation. I can think of few other writers who can so engage the mind and social consciousness. Maxwell’s play with form and structure, her use of vivid, dancing imagery, and her interest in inducing deep reflection is sure to prompt readers to think, and perhaps even say aloud, “my, my!” To read Maxwell's poetry in a recent issue of Miracle Monocle, visit Issue 10.


tier: cub

shelf: home-craft

title: Minneapolis drew avenue s from 39th to 40th streets w

text:
Minneapolis – Drew Avenue S. from 39th to 40th Streets W.
Scheduled Start Date: Spring 2022
If you contact CenterPoint Energy for any questions, please reference the project’s name or number 100165167.
What will CenterPoint Energy do?
This spring 2022, CenterPoint Energy’s authorized contractors will work in Minneapolis along Drew Avenue S. from 39th to 40th Streets W. and along 40th Street W. from Chowen Avenue S. to the alley between Ewing and Drew Avenues S.
While Michels Corporation will replace a natural gas main, connect natural gas service lines to the new main, and move any inside meters outside, Q3 Contracting will restore the areas affected by Michels Corporation’s work outside the limits of the City of Minneapolis’s work.
During this time, there may be parking, lane and sidewalk closures in areas of active construction.
What is CenterPoint Energy’s COVID-19 protocol?
The construction crews and personnel will continue to use the
Covid-19 Customer Permission Flyer, which requests customer permission prior to entering homes. Personnel, contractors and CenterPoint Energy employees will continue to practice CDC guidelines regarding social distancing, sanitary practices and wearing face masks when entering customer homes.
What if I have an inside gas meter?
The customer will receive a CenterPoint Energy postcard in the mail typically within one or two weeks prior to the day when the Michels Corporation crews will perform the work. The crews will have CenterPoint Energy-authorized photo IDs stating that they are employees of Michels Corporation.
After the customer receives the postcard, the foreman will arrive at the customer’s house to schedule an appointment that typically meets with the customer’s schedule. If the customer isn’t home when they arrive, they will leave a door tag with their contact information to schedule an appointment with them.
Customers are advised to set aside a two- to four-hour time frame for the inside-to-outside gas meter move. They are also advised to mark their privately-installed utilities such as dog fences or sprinklers. Marking can be accomplished with tools such as spray paint or utility flags. The foreman will access the natural gas meter inside the house, move the meter outside, and relight the natural gas appliance pilot lights after the new meter has been relocated.
Customers with outside meters will be notified prior to the replacement or connection of the service lines to the new mains. Areas affected by our work will be restored to their original condition.
What should I expect during restoration?
On the soft surfaces such as boulevards and lawns, various erosion control measures keep the restored area moist, hold seed in the soil, and enhance seed germination. If an erosion blanket is needed it is secured in place with staples. The mesh is a wood fiber that will completely degrade. Prior to mowing the restored area, remove any loose staples that secured the blanket. For photo examples, please visit our
Restoration Practices page.


shelf: history-culture

title: Nashville bahman ghobadi

text:
Kurd cinema in Tennessee? Exactly: who knew? Aside from its main program which already includes a gazillion titles the now-venerable Nashville International Film Festival (this year marks its 44th edition) scheduled for April 18-25 will also be screening fifteen Kurdish films down at its Regal Green Hills Cinema location, in partnership with the MPAA.
Fest organizers have announced a special three-day celebration of Kurdish films (April 19, 20, and 21) with various extra-curricular events like a reception for dignitaries, opening and closing night parties, master classes and panel discussions for filmmakers led by members of the Academy’s International Outreach Committee. The events, which are open to the public, should be expected to be heavily attended by Nashville’s large Kurdish population.
Stars like Monica Bellucci and veteran Iranian actor Behrouz Vossoughi (Iran’s answer to our Charles Bronson) are expected to be on hand to support “Rhino Season,” the program’s highlighted film (see below for further details).
In a recent press release issued by the festival Eyub Ramazan, one of the organizers, said “the event will build a bridge of collaboration between the American and Kurdish filmmakers.” Additionally, Ramazan underscored the importance of the event, “for the Kurdish community in Nashville to see the level their cinema has reached nowadays.” Nashville-Kurdish organizer, Govand Akreyi-Wani said “The Kurds have been an oppressed people. To see films by our people in our own language here in Nashville – it is just a big door opening for us.”
Stills from “Rhino Season”
“The Academy is proud to work with NaFF to bring Kurdish films and filmmakers to the U.S., and in particular to Nashville, with its vibrant and growing local Kurdish audience,” said Ellen Harrington, one of the festival’s organizers. “This is also a logical extension of the Academy’s International Outreach work, in particular our projects in the Middle East. We are happy to partner with important film festivals, like NaFF, who honor, as we do, the courageous and passionate movies being made by filmmakers around the world.”
The list of films to be screened include feature films and short films, most of which were directed by filmmakers whose names won’t necessarily ring a bell, except for one, Bahman Ghobadi–yes, the same Ghobadi who filmed “No one knows about Persian cats,” which was screened at the Cannes Festival a few years ago. Ghobadi is an Iranian filmmaker, albeit with Kurdish roots (Kurds make up a significant population of Iran’s demographics). Ghobadi will be presenting his new film “Rhino season,” starring Monica Bellucci, Behrouz Vossoughi and Yilmaz Erdogan, at the Nashville fest. Based on a true story, “Rhino Season” follows Sahel, a poet who was unjustly incarcerated during Iran’s Islamic Revolution (and a friend of Ghobadi’s). After being released into a world that is, three decades later, greatly changed, Sahel searches for the wife and children he left behind (featured photo: still from “Rhino Season”)
IRANIAN CINEMA: Check out Mubi’s list of essential iranian movies
WATCH the “Rhino Season” trailer
BELOW: stills from “Rhino Season”


shelf: civic-law

title: Charting your course setting estate goals for 2025

text:
As we welcome 2025, many of us are setting resolutions and goals to improve our lives, protect our families, and secure our futures. One often-overlooked but critical resolution involves estate planning. Whether you’re revisiting an existing plan or starting from scratch, now is the perfect time to chart your estate planning goals.
Estate planning isn’t just about having a will or trust in place—it’s about creating a roadmap to preserve your legacy and provide for the people and causes that matter most to you. By clearly defining your goals, you can ensure your plan reflects your priorities, minimizes stress for loved ones, and avoids unnecessary expenses like probate and taxes.
3 Key Goals for 2025
- Review and Update Your Plan
Life changes—so should your estate plan. Major events like marriage, divorce, the birth of a child, or a significant financial change might mean your current plan no longer aligns with your needs. Make it a goal to review your documents annually and work with an attorney to ensure everything is current. - Incorporate Health and Financial Directives
Unexpected health crises can happen at any age. By including documents like a healthcare surrogate designation, living will, and durable power of attorney, you ensure that trusted individuals can step in to make decisions on your behalf if needed. - Communicate with Loved Ones
Open communication is essential to avoid misunderstandings later. Consider holding a family meeting to discuss your intentions, explain key decisions, and provide clarity about how you wish your affairs to be handled.
The beginning of the year offers a unique opportunity to take proactive steps toward achieving peace of mind. A well-thought-out estate plan doesn’t just protect your assets—it protects your loved ones, ensuring they’re cared for during challenging times.
If you’re ready to set your estate goals for 2025 or need assistance updating your plan, we’re here to help. At Nuñez Estate Law & Title, we specialize in guiding families through every step of the estate planning process. Let us help you make this year one of clarity, preparation, and peace of mind. We serve the entire state of Florida so call us at (305) 962-5929 with any questions you may have or clicking here.


shelf: science-engineering

title: Volkswagen eCrafter Review 2025

text:
Volkswagen eCrafter Review 2025
Driving the Volkswagen eCrafter
If you’ve never driven an electric van then the eCrafter will be a great place to start. It's comfortable, driver-friendly and packed with lots of useful tech that will transform even the most-timid of drivers into a confident and capable large van pro.
The electric motor is the star of the show, with its silent operation delivering 136PS to the front-wheels via a single speed gearbox. Torque (all 290Nm of it) is instant, which means a fully laden eCrafter will whizz away with impressive gusto.
However, while packed with low-gear pull, the eCrafter is occasionally too quiet for its own good. Indeed, venture through a busy town centre and it won't be long before a pedestrian will wander out in front, simply because they never hear you coming.
On the road the electric Crafter does everything that you'd expect of the diesel-powered van, but there is some notable weight with the largest 4.2 tonne versions requiring respect and patience when it comes to corners and breaking. Front-end grip is generally fine, but the body does have a tendency to lean a little more than expected. Acceleration will fizzle out once you pass 40mph too, with all versions restricted to a top speed of 56mph.
Unlike its rivals, you don’t get a baffling array of driving modes. Instead, you simply hop in, switch on and drive away. The battery charge level is displayed on the instrument binnacle, while the touchscreen infotainment system provides a detailed snapshot of exactly how far the van will travel on a single charge.
Like many electric vans the eCrafter uses regenerative braking that tops up the battery as you lift off the accelerator, to top up the battery and add valuable miles to the range. The system itself is completely automatic, which means you don’t have to play around with different settings to get the most out of it.
Given that the eCrafter is pitched at delivery companies, it perhaps shouldn’t come as a surprise to see that Volkswagen has packed lots of computerised driver help into its large van.
Standard features include parking sensors, a rearview camera and automatic emergency breaking. A hands free parallel parking system is also available, along with Volkswagen’s latest touchscreen navigation with voice control and mobile phone connectivity.
Volkswagen eCrafter interior
The cabin of the eCrafter isn't as plush as the Mercedes-Benz eSprinter, but there is no shortage of comfort or storage. The two-tier door pockets are particularly useful, with the upper level being perfect for loose change, pens and scraps of paper. All versions get three seats as standard, with a foldable middle seat that doubles up as a laptop table.
There are numerous cup holders or power sockets too, which makes it easy to charge up electrical items like phones and laptops. The door pockets are also large enough to accommodate a tablet PC.
In-cab comfort is good, with the heavy seat padding providing lots of support for the upper legs and lower back. An optional ErgoComfort seat, with shock absorber cushioning, adds more comfort on the motorway with 14 different settings, but can get a little springy on B roads.
Payload ratings are broad with the eCrafter carrying payloads from 1.0 to 1.7 tonnes. What's more, with the battery packs situated under the load floor, you get the same 10.7 maximum cubic metres of load space in the medium wheelbase van as you would with the diesel version.
As before, access to the load area is easy with a low loading floor and wide door openings. A single side sliding door is fitted as standard and provides an opening of 1311mm. A second sliding door can be optionally added. The rear doors open to provide 1552mm and most medium wheelbase vans will carry four Euro pallets.
For those who want their vans to be forklift-friendly, an optional 270 degree opening mechanism for the rear doors can be fitted, along with wooden sidewall and floor protection. There are also numerous tie-down points to prevent loads from shifting.
e-Crafter zero-emission van goes online
The e-Crafter was developed in parallel with models that have Euro6 diesel engines (TDI). The lithium-ion battery in the underbody enables full utilisation of the 2590 mm tall high-roofed van's cargo capacity of 10.7 m3 . The same applies to other important dimensions such as the vehicle's through-loading width (1,380 mm) and cargo compartment height (1,861 mm). Maximum payload is between 0.975 and 1.72 tonnes depending on the configuration.
The electric motor – an EEM85 synchronous motor – is integrated at the front of the e-Crafter. It produces 100kW of peak power and 290 Nm of torque. Power is transferred to the front wheels via a single-speed automatic gearbox (EQ 290) designed for commercial vehicles. Together, the engine, gearbox and differential form a compact module. This unit is manufactured at the Volkswagen Group's components plant in Kassel. Other technical elements of the drive system include the engine controller and the power electronics. The latter controls the flow of high-voltage energy between the electric motor and the battery. The power electronics module converts the direct current (DC) stored in the lithium-ion battery to alternating current (AC). Meanwhile, a DC/DC converter generates the 12 V for the electrical system in the vehicle.
At a charging station operating at 40kW (direct current), the battery (energy capacity 35.8kWh) can be charged to 80 per cent of its energy capacity in just 45 minutes. If an AC wallbox supplying 7.2kW (alternating current) is used, the battery can be charged to 100 per cent within 5 hours 20 minutes. This is generally done overnight at a company's operations facilities.


shelf: software-docs

title: Post

text:
Some additional observations on the Serene preamp. I disconnected the Serene from my office system (Magenpan LRS+ and CODA #16) and drove it down to my friends place in Ventura, CA.
I wanted to hear the new RAAL 1995 Magna and Immanis headphones. I am a 2-channel guy but the older CA-1a and SR1a are spectacular, and I wanted to hear the new ones that are supposedly way better.
I took the Serene because it has a headphone only XLR output on the back. Last week, I spent $200 and bought the required cable from Kitsune.
My friend was building a crossover less speaker. It was a prototype and we listened to it with a passive preamp (volume control) that he had also built and my Serene. After just a few minutes I could tell that the Serene was outclassed by the passive. Everything was better across the board. I would expect the same result if I used that same passive preamp with the CODA #16.
My friend is thinking of building a balanced 4-input passive with dual XLR outputs. I told him to keep it cheap and let me know. I am keeping the Serene but no longer with the CODA #16. I will move the Serene downstairs to function as a headphone amp and 2-channel preamp.
The 2 new phones I heard were amazing. So good that I want to get the one I preferred for rock music, the Immanis. I am not sure how I can pull that off without selling the CODA #16. If it has to go it will, to get the Immanis.


shelf: health

title: Immune thrombocytopenia

text:
This is a promising new agent for ITP, where the median time of 50K platelets is one week. This is a small study though, awaiting more data in the future.
Eltrombopag for Low-Risk Myelodysplastic Syndromes With Thrombocytopenia: Interim Results of a Phase II, Randomized, Placebo-Controlled Clinical Trial (EQOL-MDS)
This great Italian study uses eltrombopag in patients with low/intermediate risk MDS. The intervention arm had significantly fewer minor bleeding events and better platelet counts that were durable. Those with higher baseline Hb’s seemed to respond better to therapy, particularly if the Hb was >8g/dL. AML evolution/blast progression was not more common in the treatment arm, which refutes some prior concerns.
Prolonged response after TPO-RA discontinuation in primary ITP: results of a prospective multicenter study
Benign heme article of the month– A significant portion of patients with stable platelet counts can be gently tapered from TPO-agonists. Those who needed to be re-challenged had a good response. This is likely an underutilized strategy.
Introduction to a How I Treat series on management of high-risk patients following allogeneic transplant
Interesting prospective study assessing outcomes in ITP in pregnant women while measuring neonatal ITP in the developing child, with a control of non-pregnant women for comparison. Pregnancy-ITP was associated with a 2.7x higher rate of recurrent disease. However, bleeding was similar in pregnant vs. non-pregnant women. NITP risk was associated with more severe ITP disease in the mother and the severity of the disease, as well as prior h/o ITP in the mother.
Efficacy and Safety of Intravenous Efgartigimod in Adults with Primary Immune Thrombocytopenia: Results of a Phase 3, Multicenter, Double-Blinded, Placebo-Controlled, Randomized Clinical Trial (ADVANCE IV)
Another new (potential) option for refractory ITP patients, efgartigimod is an IgG1-Fc-fragment engineered to reduce IgG autoantibody levels. 131 patients enrolled and 67% had >=3 prior lines of therapy, placebo controlled study. The study group had a 90% sustained platelet response, with >50% having plt counts of >30k >= 7 days apart.
Interesting drug and mechanism of action in the setting of ITP. Tolerability, efficacy appeared promising. Larger studies and post-marketing RWE will be of help in analyzing this treatment option.


shelf: finance

title: ITP Taxes LLC

text:
ITP Taxes LLC
Income Tax Preparation Services
We make our clients’ lives easier by helping them navigate their individual tax situations.
What We Do
Personal Income Tax Preparation Services
When it comes time to file your personal taxes every year, you may feel overwhelmed. At ITP Taxes our experienced income tax preparers will spend the time needed to make sure that the process is painless and your return is accurate and nets you the greatest refund possible.
Small Business Income Tax Preparation Services
As a small business owner, you probably love what you do, but dread doing taxes every year. At ITP Taxes our experienced income tax preparers will guide you to the best tax solution amidst the ever-changing tax laws.
ITP Taxes was founded in 2000 by Dave Shiley. Dave’s dedication to preparing your individual income tax return like it is his own is at the core of the services we provides. With ITP Taxes, you get a friendly one-on-one experience where all your questions can be answered.
Dedicated to the Best Results
Ever-changing tax laws have become increasingly difficult for the non tax professional to navigate. Working with ITP Taxes gives you the peace-of-mind that comes with knowing you’re getting full advantage of any and all tax breaks available to you.
In addition to our personal income tax preparation expertise, ITP Taxes has extensive experience serving freelance professionals, small businesses, and others who don’t quite fit the mold of a “typical” income tax preparation client.
Take one step inside our Lancaster office at the Candy Factory and you’ll know you aren’t in a typical tax preparation office. Comfortable modern furnishings, monthly exhibits by local artists, and freshly-brewed locally-roasted coffee will make you feel at home and relaxed while your taxes are being professionally prepared.
Commitment to our Community
ITP Taxes is Lancaster County proud! When you do your taxes with us you’re helping to support a growing local business with roots in your community. We are active supporters of Lancaster’s business community and non-profit charities.
We Make Your Life Easier
Our mission is to make your life as stress free as possible so that you have the free time to enjoy life rather than worry about your taxes. Do your taxes with ITP Taxes today and watch your stress go away.


title: Cc sabathia returns to cleveland to host youth baseball camp at luke easter park powered by kaulig giving

text:
Cleveland, OH – CC Sabathia, Cleveland baseball legend, sets the stage for an unforgettable experience as he hosts his inaugural youth baseball camp.
The CC Sabathia PitCChin Foundation Baseball ProCamp Powered by Kaulig Giving is open to boys and girls in grades 1-8 who want to learn the fundamentals of baseball and receive tips and hands-on instruction from one of the best in the game.
“Returning to Cleveland fills me with excitement and nostalgia.” said CC Sabathia. “Playing there for eight seasons, it became our second home where we started our family. The bonds we formed with fans and friends are truly cherished. Now, coming back to give back to the community alongside ProCamps and Kaulig Giving means the world to me. Connecting with the younger generation of players and hosting a clinic here in Cleveland, on the CC Sabathia field, is an experience that will undoubtedly create lasting memories.”
The camp will take place at Luke Easter Park in Cleveland, OH on August 20, 2023. Participants will have the opportunity to work directly with Sabathia and other local coaches to learn new techniques and improve their overall performance.
“The partnership between our organizations has grown over the years, and coming together for this event is the perfect way to help kids on and off the field.” said Matt Kaulig Executive Chairman of Kaulig Companies and Founder of Kaulig Giving. “With both of us having ties to Cleveland, sports, and philanthropy, it makes sense for us to collaborate and support each other’s charitable work.”
In addition to drills and scrimmages, each participant will receive a team photo, limited-edition camp t-shirt, and a souvenir autograph. They will have the opportunity to meet and learn from CC, ask questions, and receive feedback on their performance – ensuring that participants leave with new knowledge and memories to last a lifetime.
Registration for the CC Sabathia PitCChin Foundation Baseball ProCamp is free and open to select community organizations in the Greater Cleveland area. Visit www.ProCamps.com/Sabathia23 for more information.
CONTACT: Kimmy De, Kaulig Media email@example.com
Founded in 1998, ProCamps is a best-in-class event management and sports marketing company specializing in developing, managing, and operating camps, appearances, brand activations, and related experiences for professional athletes and coaches in the NFL, NBA, MLB, NHL, MLS, PGA, ATP, NCAA, NASCAR, WPSL, MLL and NFHL. ProCamps helps Fortune 500 brands activate and execute more than 300 events across the country to effectively deliver brand messaging to thousands of parents, kids, and coaches via retail promotions, TV/radio/print, social media, and on-site activations. Visit www.procamps.com and follow ProCamps on social media.
About Kaulig Giving
Since 2018, Kaulig Giving has partnered with close to 300 non-profit organizations in Northeast Ohio and beyond to create a lasting impact for children and families. As an integral part of the Kaulig Companies Charitable Giving Programs, Kaulig Giving continues to help support the well-being of children and families through direct giving, community involvement, and partnerships with like-minded organizations. To learn more about Kaulig Giving and its current partners and projects, visit /www.kauliggiving.com.


title: Print

text:
Sautee the onion in 2 tablespoons of the butter on low heat, until golden brown and very soft. Stir the onion mixture into the cracker crumbs. Melt an additional 2 tablespoons of the butter and add to the crumbs. Stir until well mixed. The crumbs should stick together somewhat when pressed with a fork or spoon. Take one tablespoon of the butter and grease a shallow casserole dish or baking pan.
If you are using thin fillets: Lay out each fillet on a plate and spread a small amount of the cracker stuffing along its length. Press it down so that it will stay in place. Roll the fillet up and place in the buttered casserole dish or baking pan (seam down). Repeat with all the fillets. Melt the remaining 2 tablespoons of butter and drizzle over or baste the tops of the rolls.
If you are using thick fillets: Place the fish in the buttered casserole dish or baking pan. Spoon the cracker stuffing onto each piece and spread it out, pressing it down so that it will stay in place. Melt the remaining tablespoon of butter and drizzle over the fillets.
At this point you can cook the fish or cover and place in the refrigerator up to several hours.
To cook the fish: Preheat the oven to 425 degrees. Place the baking dish in the top third of the oven and bake for 10 minutes. The rolls should be done at this point, but the thicker fillets may need an extra few minutes. Use a fork to test the center of the thickest piece for doneness. Thinner pieces will cook more quickly. Serve immediately.
Serves 4. |


text:
Masterpieces of the Prado Museum in Madrid - Virtual Experience (Recorded)
- Duración: 60 Minutos (aproximadamente)
- Código de producto: VIRTUALGRP1028
Masterpieces of the Prado Museum in Madrid - Virtual Experience
The Prado Museum is one of the most important and finest art galleries in the world: situated in the center of Madrid, Spain, has a vast collection of Italian, flemish, Spanish, and European old masters among them: Beato Angelico, Andrea Mantegna, Raffaello Sanzio, Hieronymus Bosch, Rogier van der Weyden, Bruegel il Vecchio, El Greco, Pieter Paul Rubens, Tiziano, Diego Velázquez, Francisco Goya only to name a few. The Building that hosts the Museo del Prado was built by order of King Charles III of Spain, of the House of Bourbon, with the original intent of being the Gabinete de Historia Natural, together with a small scientific collection and a general urban reorganization called Salón del Prado. Charles III appointed for this project one of his favorite architects Juan de Villanueva, who also created the botanic gardens.
The original project was started in 1786 da Carlo III by de Villanueva, anyway was only completed a few decades later in a different form: in 1819 the Museo Real de Pinturas was for the first time opened to the general public displaying the content of the art collection of the Crown of Spain.
During this virtual tour, we will follow the creation of the gallery as well as the development of Spanish and European painting with particular attention to the great old masters here present.
HOW DOES IT WORK?
This Virtual Tour is pre-recorded. After purchasing access, you will receive a link to view the Virtual Tour at your convenience. You can watch the video as many times as you like; access does not expire.
The Present Video belongs to The Grand Tour Europe Ltd, and it is intended for pure education and entertainment purposes. All images, videos, locations, and artworks featured in the video are credited to their respective authors and are used exclusively for educational purposes and criticism under the fair use doctrine, with appropriate credits provided in the audio commentary. This video is for personal use only. You are not permitted to play it in public, distribute, or resell it in any manner.


title: Middlesex probate and family court south will be moving to woburn on monday november 9th

text:
On Friday, November 6, 2020, Middlesex Probate and Family Court – South will move out of its historic location in East Cambridge to begin new operations in a newly-constructed courthouse in Woburn. Previously, in May 2020, the Court implemented a division of the county and the creation of Middlesex Probate and Family Court – North, moving half of the staff to begin full-time operations in the new Lowell Justice Center.
Middlesex Probate and Family Court – South will be open for business on Monday November 9, 2020 at 8:30 a.m. at 10-U Commerce Way in Woburn. With the Lowell location serving the northern and western cities and towns of Middlesex County, the new Woburn location will continue to serve the same southern communities that it served when operating out of the Cambridge buildings.
As the largest county in the Commonwealth, Middlesex contains 54 cities and towns, spanning over 840 square miles. The creation of two locations was years in the making and designed to better serve the more than 1.6 million residents of Middlesex County in navigating through the complexities of family and probate law. The relocation of Middlesex-South out of the historic building in Cambridge was necessitated by the enormous challenges in maintaining and improving the infrastructure to meet the current needs of the court.
“Our court has been operating out of its East Cambridge building for 120 years, so you can imagine how sentimental some staff and court users have been over these last few weeks,” said First Justice Maureen H. Monks. “Although the move represents the end of an era, we look forward to all of the advantages that the new courthouse will bring.”
Register of Probate Tara E. DeCristofaro added: “The new Woburn courthouse for Middlesex-South will assist our court in providing more user-friendly service and access to justice.” Register of Probate Tara E. DeCristofaro also noted that unlike the site in Cambridge, the Woburn site has ample free parking for staff and court users.
Although both Middlesex Probate and Family Court locations are now at full staffing levels in the Registry and in the Judiciary, most of its work, including court hearings, are being handled through virtual and electronic means. For more information on the new Woburn location, areas being served by the North and South and how to access each court location for filing and hearings, please see Operating procedure for the Middlesex Division of the Probate and Family Court.


title: 1565

text:
Introduction: In the world of telecommunications, a reliable and efficient fiber connector serves as the lifeline of modern communication networks. These connectors play a pivotal role in ensuring seamless and high-speed data transmission, making them an essential component in the field of optical communication. In this article, we will delve into the key features, applications, and advantages of fiber connectors, shedding light on their significance in the ever-evolving world of communication.
Key Features and Advantages: Fiber connectors are designed with precision and ingenuity to achieve low insertion and return losses, thus optimizing signal quality during data transmission. Their compact and versatile designs enable easy deployment in various network environments, including data centers, telecommunications, and enterprise networks. Moreover, fiber connectors offer enhanced durability, ensuring a robust and stable connection even in challenging conditions.
Applications in Communication Networks: https://www.fiber-mart.com/fiber-connector-c-75_389.html find widespread application in connecting optical fibers to active devices such as transceivers, switches, and routers. They facilitate efficient link establishment between optical cables, providing reliable and high-performance communication across vast distances. From long-haul networks to short-distance data centers, fiber connectors are indispensable in the seamless flow of data.
Conclusion: The fiber connector's ability to establish a reliable and high-speed connection is vital to the success of modern communication networks. Its precise engineering, adaptability, and durability make it an indispensable component in ensuring efficient data transmission and seamless communication.
Keywords: Fiber connector, telecommunications, data transmission, optical communication, seamless communication, high-speed data transmission, network environments, data centers, low insertion loss, return loss, signal quality, active devices, transceivers, switches, routers, long-haul networks, short-distance data centers, precise engineering, adaptability, durability, network reliability.


title: Google

text:
The Google plugin lets your app's end-users authenticate with Google to sign up and log in to your app.
The plugin settings allow you to specify your App ID and App Secret token.
App ID: this string identifies your application with Google.
Secret key: this key is used to authenticate your app's access to Google. This key should be kept strictly confidential.
You can also add development tokens as provided by Google, to test the API without it affecting live data. The information added here will automatically be used when you preview your app in the Development environment.
The plugin adds a new action to the Bubble editor that lets your end-users sign in and log in to your app using their Google account. These two processes are contained within one action:
Account - Signup/login with a social network
Bubble will automatically create a new account or log in an existing account, depending on whether the end-user already has a Google-authenticated account set up with your app.
The Google plugin adds five new data sources to your app. Note that all of these data sources are connected to the Current User. This means that they are accessed by using the Current User data source, and then appending the source you wish to reach, such as:
Current User's Google's First name
The following data sources are added to the User data type:
ID: the unique ID of the user in Google's system
Email: the user's email address registered with Google The email will also automatically be saved in the Current user's email field
Was this helpful?


title: Amp

text:
Back Clinic Whiplash Chiropractic and Physical Therapy Team. Whiplash is a collective term used to describe injuries to the cervical spine (neck). This condition often results from an automobile crash, which suddenly forces the neck and head to whip back and forth (hyperflexion/hyperextension). Almost 3 million Americans are hurt and suffer from whiplash annually. Most of those injuries come from auto accidents, but there are other ways to endure a whiplash injury.
The symptoms of whiplash may include neck pain, tenderness and stiffness, headache, dizziness, nausea, shoulder or arm pain, paresthesias (numbness/tingling), blurred vision, and in rare instances difficulty swallowing. Soon after it happens at the acute phase the chiropractor will focus on reducing neck inflammation utilizing various therapy modalities (eg, ultrasound).
They might also use gentle stretching and manual therapy techniques (eg, muscle energy therapy, a type of stretching). A chiropractor may also recommend you apply an ice pack to your neck and/or light neck support to use for a short time period. As your neck gets less inflamed and the pain diminishes, your chiropractor will execute spinal manipulation or other techniques to restore normal movement to your neck’s spinal joints.
Discover the connection between the nervous system, auto injuries, and long-term health consequences in this informative article. Introduction: The Sneaky… Read More
Experiencing a whiplash injury can be disorienting and painful. Can recognizing the signs of more serious complications, seeking timely medical… Read More
Automobile accidents are emotionally and physically traumatic events. After an accident, individuals assume that they are okay if they don't… Read More
After a car accident, you may notice neck pain. It could be a slight soreness you think is nothing but… Read More
Whiplash-associated disorders, or WAD, describe injuries sustained from sudden acceleration/deceleration movements. It is a common outcome after a motor vehicle… Read More
A whiplash injury can cause pain for months, even years after the accident/incident. It can cause persistent pain in the… Read More
Whiplash is one of the most devastating cervical/neck spinal injuries. Rapid acceleration and deceleration can be so powerful that it… Read More


title: What items can change my mortgage pre approval status

text:
When you are purchasing a home, your lender may recommend you obtain a mortgage pre-approval before you find the home of your dreams. There are some benefits to being pre-approved before you find a home, but oftentimes, people confuse pre-qualifications with pre-approvals.
So the question many buyers have is what exactly is a mortgage pre-approval? In a nutshell, it’s when the lender provides you (the buyer) with a letter stating that your mortgage will be granted up to a specific dollar amount.
What Do I Need For Pre-Approval?
In order to obtain a pre-approval for your home purchase, you will have to provide your lender all of the same information you would need to show for qualifying for a mortgage. This means providing tax returns, bank statements and other documents that prove your net worth, how much you have saved for your down payment and your current obligations.
What Conditions Are Attached to a Pre-Approval?
Generally speaking, a pre-approval does have some caveats attached to it. Typically, you can expect to see some of the following clauses in a pre-approval letter:
- Interest rate changes – a pre-approval is done based on current interest rates. When rates increase, your borrowing power may decrease
- Property passes valuation and inspection – your lender will require the property you ultimately purchase to come in with a proper appraisal and meet all inspection requirements
- Credit check requirements – regardless of whether it’s been a week or six months since you were pre-approved, your lender will require a new credit report. Changes in your credit report could negate the pre-approval
- Changes in jobs/assets – after a pre-approval is received, a change in your employment status or any substantial assets may result in the pre-approval becoming worthless
What Items Can Change My Mortgage Pre-Approval Status?
One of the major issues that affect some borrowers as they are preparing to purchase their new home is financing large ticket items before the home purchase loan is completely funded. Even if you are buying new furniture or other items for the home, it’s best to wait until after your home loan is entirely complete before purchasing any of these new items.
Work changes can also drasitically affect your pre-approval status. Make sure your loan professional is well aware of any changes well in advance of them happening in order to plan effectively. There are ways to work with job changes but it is a delicate matter during the mortgage underwriting process.
Getting pre-approved for a home mortgage may allow you more negotiation power with sellers and may help streamline the entire loan process. It is however important to keep in mind there are still things that may have a negative impact on actually getting the loan.
It is important to make sure you keep in contact with the lender, especially if interest rates increase or your employment status changes after you are pre-approved.


title: About this page |

text:
About this page |
Our News Graphics gallery is updated daily with TV and Web-ready, high-quality images in a variety of formats. Easily find everything you need in just minutes. MGN Online is very proud to serve thousands of TV networks and online News sites each and every day with a time-saving, affordable Graphics solution. Ready to find your Images? Simply log in, do a search and click download when you find the image you want. If you’re not a member yet, join us with a Free 14 day trial to see what we’re all about. Why should you use MGN Online? Find out here! |
MGNpro provides Unlimited Access to All MGN Content
Please call 800 483 0961 or request more information about MGNpro.
Unlimited useAll sizes availableEmbedded photo credits
NO RESULTS FOUND
Keyword Search Tips
Less specific inquiries will return more alternatives.
Example: baseball vs. american league.
If your inquiry was plural, try making it singular (or vice-versa).
Example: map vs. maps or logos vs. logo.
If you are still unable to find what you're looking for, you can request the image here.
Your current service level does not include HD Still or Animated Graphics.
To add the "HD" service level please contact firstname.lastname@example.org or call (800) 483-0961 for more information.
Please check your email /add user's email/ and click the link activate account, so that we can get the rest of your account setup.
Once your account is activated we will send you a follow up email with information to help you get up and running with MGN Online.
Username | Name |


text:
Small Batch: The Bourbon Twist You Can’t Overlook
"Small Batch" might sound like a boutique buzzword, but it’s a craft approach that’s too good to ignore—if you’re not hip to it, you’re missing bourbon’s refined side. This term prioritizes care over mass production. Here’s the honest truth about Small Batch bourbon, from process to pour, and why it’s a 2025 must-try.
What Does Small Batch Mean?
Small Batch bourbon meets all U.S. legal standards—at least 51% corn mash, distilled to 160 proof max, barreled at 125 proof max, aged in new charred oak, and bottled at 80 proof minimum—but stands out by blending fewer barrels than large-scale runs. While there’s no legal cap on barrel count, it’s a curated mix designed for tighter control, setting it apart from standard production.
How Small Batch Bourbon Is Made
The journey starts with fermenting a mash of 51% corn or more into an 8-10% ABV liquid over three to five days, followed by distillation up to 160 proof. The spirit then ages in new charred oak barrels at no more than 125 proof for two years or longer—often four to eight—building flavor from the wood. When ready, a select handful of barrels are blended and bottled at 80 proof or higher, offering a refined take shaped by careful selection rather than mass volume.
What Small Batch Offers Your Glass
By blending fewer barrels, Small Batch bourbon achieves a precise balance, merging the corn’s sweetness with oak-driven vanilla or spice for a cohesive sip at 80 proof or above. Higher proofs over 100 can sharpen the edges, but the limited mix ensures a consistent yet distinctive taste, reflecting the craft focus behind each batch. It’s bourbon with intention in every pour.
Why Small Batch Rules 2025
Small Batch strikes a craft sweet spot—by 2025, grasping this term could point you to polished pours that blend quality with character. It’s the label that elevates bourbon beyond the every day—don’t let its finesse go unnoticed. Want to sip a small batch? Check out NEAT: Whiskey Finder—it’ll help you track down bourbon and whiskey near you.


title: Darjas rising star a young composers journey beyond performance

text:
Prague, The Gulf Observer: Karlovy Vary-born composer Darja, now in her mid-twenties, is fast emerging as one of the most promising voices in contemporary classical music. Her recent victory in the Under 30s category at the prestigious 71st International Rostrum of Composers marks a major milestone, cementing her place among the rising stars of the global music scene.
The winning composition, Calmness II—a hauntingly ethereal duet for clarinet and vibraphone—was written between 2022 and 2023 and performed by Anna Paulová (clarinet) and Štěpán Hon (vibraphone). The piece captivated the Rostrum jury, comprised of 18 radio delegates from four continents, for its refined texture and emotional depth.
This week’s Sunday Music Show delves into Darja’s musical journey, airing Calmness II and featuring an exclusive interview that offers rare insight into her early beginnings, artistic process, and aspirations.
A Composer at Heart
While many musicians are drawn first to performance, Darja discovered her passion for composition early on.
“It was at the end of my primary-school education. At the time I was playing the piano, I sang and I composed music. Composition just got to me really differently. I just enjoyed it very much,” she reflects. “When I performed music written by others—whether singing or playing piano—it didn’t quite feel right. But when I composed, I thought, ‘yeah, that’s mine, I want to do this, and I want to do this right’. That’s when the decision was made.”
A Family Foundation
Darja’s journey into music wasn’t solitary—her mother, also a musician, played a key role in shaping her path.
“I’m so glad that my mum supported me, because she’s also a musician, and she prepared me for my conservatory exams. She guided me, so I’m really extremely grateful to you, Mum, if you’re listening!”
What’s Next for Darja?
With Calmness II making waves in the contemporary music world, listeners are eager to hear what comes next from this introspective and visionary artist. In the interview, she hints at future works that continue to explore space, silence, and the interplay of sound and emotion—hallmarks of her distinct voice.
As her artistry evolves, one thing is certain: Darja’s music resonates far beyond the score, drawing listeners into moments of serene introspection and subtle power.
Catch the full broadcast of the Sunday Music Show to hear Calmness II and discover the creative world of a composer who’s just getting started—but already speaking with a voice all her own.


title: Know your rights

text:
Mothers have a natural ability to care for and protect their children. They are selfless and only want the best for their families. When faced with family law disputes over issues such as divorce, child custody, visitation, child support and relocation, a mother’s protective instinct will kick in, and can at times make it difficult to remain calm.
With only their children in mind, a mother can easily feel overwhelmed, when facing these issues. It’s important to remember that you don’t have to face these issues alone. At Bineham & Gillen, our trained family lawyers will ensure your case receives the attention it deserves.
When a father wants to establish conservatorship, he has the right to file a Suit Affecting the Parent-Child Relationship or a Suit to Establish the Parent-Child Relationship. The suit will ask the court to decide issues of parentage, conservatorship, visitation, and child support. A suit for child support may be filed with the attorney general’s office pursuant to either a request by one of the parents or the state if a parent is receiving state benefits such as welfare or Medicaid. The attorney general will represent the state’s interest for parents to collect child support.
As a result, the attorney general represents the state, not either parent in the suit. When establishing the child support order, the attorney general will typically address the issues of conservatorship and visitation. You should seek legal counsel to discuss your legal options as soon as you are served with any papers from the attorney general, as failure to respond quickly can affect how the case is handled.
In 2000, the U.S. Supreme Court issued an opinion in Troxel v. Granville, 530 U.S. 57 (2000) that has had some negative impact on the visitations rights of grandparents. The court held that a parent has a fundamental right to decide access to a child which has been deemed as the “fit parent” presumption. The Texas Family Code has provisions that state a grandparent can have possession and access to their grandchildren in certain circumstances.
Since Troxel, the Texas Attorney General has issued an opinion (See Tex. Atty. Gen. Op. No. GA-0260 (2004)) that Texas Family Code Statute pertaining to grandparent access could be unconstitutional because it fails to incorporate this “fit parent” presumption. In 2005, the grandparent access statutes were amended to better conform with Troxel and the Attorney General opinion in 2004. In any case, to avoid constitutional issues, the grandparent should demonstrate to the court that the parent is not fit or a denial of access by a grandparent would impair the child’s well-being.


tier: kodiak

title: 2033

text:
The use of GPUs in machine learning is generating a tremendous innovation boost, specially in areas like computer vision [
1]. There are several problems that the community is trying to solve using computer vision approaches [
4]. Despite these proposals having different targets, they usually share a key aspect, the architecture of the neural network used under the hood—Convolutional Neural Networks (CNNs). CNNs have achieved state-of-the-art accuracy in many areas related to computer vision, being able to pinpoint the expected result and to overcome human precision in many cases. As their name suggests, the convolution operation is the core of this type of networks.
CNNs architectures are continuously growing in depth and width, hence, their training and inference are causing the computational cost to increase [
5]. For this reason, trying to optimize the performance of the convolution operation is the target of recent research works. In those terms, the Winograd’s algorithm has demonstrated a great performance in convolutional operations, especially for
filters, achieving a theoretical arithmetic complexity reduction of
. The main hardware-vendor libraries provide implementations carefully tuned for their devices, such as NVIDIA cuDNN [
6], ARM Compute Library [
7], Intel oneDNN [
8], previously called MKL-DNN, or AMD MIOpen [
9]. In Nvidia GPUs, cuDNN is clearly the reference to beat in terms of performance, Nvidia GPUs being also a reference architecture for this type of workload. However, some considerations must be taken into account:
Some libraries such as cuDNN contain important sections of machine assembly code;
Nvidia engineers hand-tune their libraries at Shader ASSembly (SASS) level to optimize the performance on their devices at a very low level;
These implementations are not usually open-source, so it is not possible to tune the performance of these implementations for special use-cases.
For these reasons, recent research works [
11] have cracked the Instruction Set Architecture (ISA) of different generations of Nvidia GPUs providing an intermediate SASS assembler, which enables the direct generation of machine code. While these third-party implementations usually outperform cuDNN, SASS programming is hard and the resulting code is restricted to a specific architecture. Taking into account that in large AutoML processes it is quite common to use hybrid or mixed devices to train neural networks (NNs), these solutions will be unaffordable. An example of this is Neon [
12], a deep learning framework that achieves high performance on Maxwell and Pascal GPUs, but fails in newer architectures such as Turing because some kernels were hand-crafted in SASS. Nowadays, this project is discontinued. Another consequence of this situation is that it is not easy to find CUDA-level implementations, as it is really difficult to outperform SASS codes. Furthermore, third-party assembly-level implementations of the convolution, particularly of the Winograd algorithm, are not publicly available, thus the difficulty is even greater.
An analysis of the design of recent Winograd implementations detected deficiencies that can lead to important performance drops [
10]. A performance-competitive only-CUDA implementation of the Winograd algorithm can be the base for a performance-portable implementation and it makes it easier to tune low-level implementation details between different platforms without requiring the generation of new specific SASS code, and eventually having to crack the ISA of a new platform.
This paper makes the following contributions:
An only-CUDA implementation of the single-precision Winograd algorithm for
kernels is introduced. The code was released as open-source software under the name openCNN and it can be found at
https://github.com/UDC-GAC/openCNN, accessed on 28 July 2021.
Its performance has been evaluated on NVIDIA Turing RTX 2080Ti and NVIDIA Ampere RTX 3090 and compared to the state-of-the-art Winograd implementation in cuDNN 8.2.0, achieving a speedup up to
on RTX2080Ti and
on RTX 3090 in ResNet [
Moreover, the performance of our openCNN implementation has been compared with different convolution algorithms available in cuDNN. The average speedups achieved are (w.r.t. FFT), (FFT Tiling), (GEMM), (Implicit GEMM), (Precomputed implicit GEMM) and (Winograd Non-Fused version) on Turing NVIDIA RTX 2080Ti. Equivalently, on Ampere NVIDIA RTX 3090 the speedups obtained are (w.r.t. FFT), (FFT Tiling), (GEMM), (Implicit GEMM), (Precomputed implicit GEMM) and (Winograd Non-Fused version).
This paper uses the implementation proposed in [
10] as a reference, making the following contributions with respect to that work:
Our implementation is fully written in CUDA and can be easily tuned and ported to different NVIDIA hardware platforms. However, the implementation described in [
10] contains important fragments of architecture-specific assembly code which is restricted to a particular GPU architecture and ISA encoding.
The implementation of the reference paper uses assembly code to improve the performance of key hotspots of the method, some of them containing costly memory movements. In our paper, these hotspots are encoded in CUDA, using microbenchmarking to find the most efficient way to implement them. The paper also discusses different alternative methods to implement those important sections of the code. As a consequence of all this, our implementation achieves speedups up to
on NVIDIA Turing RTX 2080Ti and up to
on NVIDIA Ampere RTX 3090 over the CUDA implementation of [
10]. A direct comparison with [
10] is not possible as its full code is not publicly available.
Unlike the study in [
10], the full code of our paper is released as open-source software.
The rest of the paper is organized as follows:
Section 2 introduces the fundamentals of the Winograd algorithm.
Section 3 presents a high-level analysis of the Winograd algorithm oriented to its implementation and reveals the baseline code details. In
Section 4, the set of optimizations applied to the baseline implementation is described. The experimental results are reported in
Section 5, while
Section 6 summarizes the related work and
Section 7 concludes the paper.
2. The Winograd Convolution Algorithm
The minimal filtering algorithm for convolution was promoted initially in [
14] by Shmuel Winograd and later rescued for its application in convolutional neural networks in [
15]. The algorithm has the status of a state-of-the-art implementation of the convolution operator, and its popularity resides in its reduction of the number of operations required with respect to the direct method. For this, it takes advantage of the inherent overlapping present in the direct method.
The general (direct) 2D batched
convolution can be expressed as:
is the input data element,
is a filter element and
is an output tile. Each subindex represents:
Let us illustrate the aforementioned overlapping of this method through an example.
Figure 1 shows the convolution operation of a single channel input matrix and a
filter with stride 1. The direct convolution slides the filter along the input image performing separated Hadamard products [
16] which are then reduced with a sum. If this processing is divided into
tiles, the convolution generates a matrix of
values per tile. The right side of the figure focuses on the processing of the first of these tiles, the top leftmost one, showing that all the elements of the highlighted tile of the input image, except a, d, m and p, are used in several Hadamard multiplications.
Winograd exploits this overlapping by creating an intermediate representation of the input tile and the filter that generates the same result as the direct method but requiring fewer operations and, thus, instructions. The mathematical rationale of this approach is now illustrated for the one-dimensional case. Let us consider the convolution of a vector
K and a filter
w, where ∗ is the convolution operation:
Using stride 1, the resulting
O vector would be calculated as:
thus involving six multiplications and four additions.
In this case, Winograd’s method proposes computing
which requires four multiplications and eight additions. However, the filter weights remain constant for the entire input image, so
can be precomputed, which reduces the total number of additions to four. By substitution we can check that this method provides the same result as the direct one.
This idea can be extended to different numbers of dimensions and input sizes. The formulation of the method depends on two factors: the output tile size
m and the filter size
r. These two values condition the value of the input tile size which can be calculated as:
In the general case, the Winograd algorithm solves the convolution between a filter
g and an input tile
d using the following formula:
where ⊙ is a Hadamard (element-wise) product. The contents of matrices
A are constant for a given combination of
r. For instance, for
, the contents of these matrices are:
The fact that the contents of these matrices change for every possible value of
is not a big deal for deep learning applications, as the shape of the inner layers of convolutional networks is very regular. For instance, having filters of
elements is common in modern networks, and the value of the output tile can be fixed to favor the performance of the implementation. The generic algorithm used to build these matrices for each combination of
r can be found in [
In the two dimensional case (
Figure 2), the value of
is calculated as:
and the convolution formula is adapted as:
The three-dimensional case is quite similar, as it consists of applying the base Winograd algorithm independently to all the
C input channels and then reducing the results into a single matrix using an element-wise addition, resulting in the expression:
3. Implementation of the Winograd Algorithm
This section provides further details of the implementation of the Winograd algorithm. At the top level, the algorithm starts with an input matrix, which is divided into tiles of elements. Then, these tiles are processed separately. In fact, the processing of different tiles can take place in parallel and this is an important source of parallelism. The processing of each tile is done using the formulas introduced in the previous section, making space for the following sequence of four steps, where and are the row and column of the tile, respectively :
Filter transformation: the original filter g is operated with matrix G using the following expression ;
Input transformation: the input tile is operated with matrix B using the following expression ;
Multiplication: the outputs of the two previous steps are multiplied using a Hadamard product;
Output transformation: the result of the previous step is operated using the following expression .
Let us recall that the contents of matrices G, B and A are constant for each tile size . The value of has a big influence on the performance of the algorithm. The larger it is, the higher the arithmetic reduction ratio, but also the worse the precision of the calculation. Thus, it is necessary to find a trade-off between precision and performance when choosing the value of . Many previous implementations of the algorithm use as standard.
This paper uses the implementation proposed in [
10] as a starting point. In the remaining, it will be called the
reference implementation. Its authors combine several low-level optimizations with the usage of
Shader ASSembly (SASS) code to achieve state-of-the-art performance on GPUs. Our aim is to generate a CUDA-only C++ implementation and to optimize it as much as possible. In addition, our implementation (
https://github.com/UDC-GAC/openCNN, accessed on 28 July 2021) is open-source and competitive in several hardware platforms.
Our code was written from scratch, as the reference implementation is not freely available. Algorithm 1 shows an enriched version of the pseudocode introduced in the original paper, which contains additional details such as software pipelining, barrier synchronization and data prefetch.
Algorithm 1: Pseudocode of the Winograd’s algorithm implementation for . SMEM stands for Shared MEMory while GMEM stands for Global MEMory. |
GPUs have a small amount of fast memory (i.e., shared memory and registers) available. The reference implementation uses cache blocking for maximizing data reuse, hence, filters, input tiles and channels are assigned to each thread block in each iteration, which means that and block sizes are used for input and filter, respectively.
The reference implementation uses a cache block size of
, unlike other recent implementations like cuDNN [
6] and Neon [
12] that use
. The reason is that several recent CNN architectures like VGG or ResNet have a number of filters multiple of 64 and this block size increases the arithmetic intensity by 33%, while it reduces the number of input data loads and transformation steps. Furthermore, it makes the resulting code more robust to L2 cache misses.
The filter transformation step is implemented following the FX variant [
Figure 3), i.e., in a kernel separate from the main loop. The filter is usually much smaller than the input, thus its transformation takes a negligible time. The implementation details of this filter transformation are not included in the pseudocode. To put this into perspective, in this step of the reference implementation, each thread block loads
filter tiles in each iteration. As each thread block has
threads, each thread of the block loads two tiles (Line 4 in Algorithm 1).
The Input Transformation step is implemented in the CUDA kernel of the main loop (Line 15 in Algorithm 1). In each iteration of the algorithm, each thread block loads input tiles to shared memory and transforms them. As each block has 256 threads, each thread loads and transforms a single input tile (Line 3 in Algorithm 1).
The following step of the algorithm is the element-wise (Hadamard) matrix multiplication (EWMM) (Line 28 in Algorithm 1). At this point we should remember Equation (
5), where, after calculating the Hadamard product independently for all the channels, they have to be reduced using an element-wise addition. The reference implementation takes advantage of the fact that the accumulation on each tile can be performed concurrently. Thus, we can turn the element-wise multiplication into a 16-batched matrix multiplication. Letting each thread compute two
matrix multiplications, the computation intensity increases, hiding better the shared memory latency. As a result, each warp computes
A key aspect for performance of the batched matrix multiply step is to map input and filter tiles to the threads of a warp avoiding bank conflicts. The reference implementation uses the Lane ID arrangement shown in
Figure 4, which requires transposing the data first. The data transposing buffer is arranged as
for input tiles and
for filter tiles (Line 1, 2 in Algorithm 1), 16 being the number of elements of an
tile. Each lane loads four consecutive elements from shared memory (LDS, LoaD from Shared memory instruction), enabling the usage of 128-bit instructions (
). For example
loads input data at locations 8, 9, 10, 11 and 24, 25, 26, 27, and filter data at locations 0, 1, 2, 3 and 32, 33, 34, 35, across
channels. As a result,
elements of input data and
of filter data are stored into registers.
Finally, the last step of the algorithm corresponds to the output transformation and storage. In this step, the pre-transform output data (result of the multiplication step) are transposed back to return to the initial matrix organization. Specifically, each thread block has 128 KB of information stored in registers that have to be written to global memory in several rounds. Every round transposes and transforms an output tile (Line 39 in Algorithm 1) of 32 KB. The proposed layout is shown on the right side of
Figure 5. The padding defined between elements for avoiding bank conflicts implies that 8 additional KB of shared memory are needed in every round. As a consequence, this process is performed in 4 rounds of 32 KB because in Turing GPUs the shared memory can be configured up to 64 KB [
19] and every round needs
KB. The left side of
Figure 5 highlights in red the data transposed in the first round. The 32 KB correspond to 4 bytes/element × 32 (elements to transform in a round) × 4 (filters per position in data transposing buffer,
Figure 4) × 4 (input elements per position in data transposing buffer,
Figure 4) × 8 (warps within each block of threads) × 2 (output tiles per thread).
4. Optimization of the Method
The layout proposed by the reference implementation for the output transform buffer (right side of
Figure 5) in the output transform step leads to thread divergence, as it uses a quarter of each half-warp per round (e.g., lanes 0–7 and 16–23 in round 1). The reference implementation uses this layout for several reasons: (1) it matches the initial data organization and thus it ensures result correctness; (2) it generates stores of 32 continuous output elements to shared memory and avoids bank conflicts; and (3) the total buffer size of 40 KB fits in the available shared memory on Turing GPUs, 64 KB [
The 64 KB of shared memory of Turing architectures is organized in 32 banks and data are distributed cyclically among the banks in 32-bit words. Additionally, each bank can transfer 32 bits per clock cycle [
20]. The theoretical peak memory throughput can be calculated by multiplying the Load Store Unit (LSU) count per Streaming Multiprocessor (SM) (
, 16 in Turing) by the number of bytes that each LSU can load per cycle per instruction (4 bytes in Turing) which gives 64 bytes/cycle in Turing [
The theoretical peak shared memory performance is achieved if the 32 threads of a warp read/write 32-bit words on separated memory banks simultaneously. Shared memory instructions of more than 32 bits per thread (64- or 128-bit) are broken down into 128-byte (32 banks × 32 bits/bank) memory operations by the memory controller. Thus, if the word size is 64 or 128 bits, then two or four transactions per instruction will be needed, respectively.
It has been demonstrated [
11] that, in Kepler architectures, 64-bit loads perform better for shared memory while texture cached 128-bit load instructions perform better for global memory. We wanted to make our own study of the performance of load and store instructions from/to shared memory in our testing environment since the performance of these instructions is crucial in the output transformation step.
There are some works that try to measure the performance of shared memory loads and stores in Turing [
22]. In [
22], the authors prove that benchmarking those instructions using code written in CUDA or PTX is not fair since the compiler can apply its own optimizations, thus they recommend doing the test directly using SASS code.
The repository associated to our paper contains a reproduction of these experiments (
https://github.com/UDC-GAC/openCNN/tree/main/bench/smem, accessed on 28 July 2021), that has been used to validate their conclusions on our testing environment. The test are written directly in
Turingas SASS code [
Table 1a,b contains the results of our experiment and show that their conclusions also apply to our testing environment. The tests have been performed using an NVIDIA RTX 2080Ti GPU with Turing architecture and the CUDA 11.2 Toolkit. The results show that memory throughput improves using wider memory words. For example, 128-bit memory instructions have 20% higher throughput than 64-bit ones (remember the peak limit of 64 bytes/cycle). However, this advantage vanishes if using wider instructions imply using just half of the threads of a warp for storing the information as it happens in the proposal of
Figure 5. To test this, we measured the CPI and throughput of a SASS code with the same divergence patterns as
Figure 5 and the result is that the CPI is 10 clocks and the throughput 25.60 (51.21/2) bytes/cycle. That means that despite halving the number of memory transactions required, the number of clock cycles per instruction remains the same, therefore, the throughput is divided by two. However, if STS.64 stores are used, the throughput, 42.61, is larger, which means that using narrower instructions and avoiding thread divergence can significantly improve memory performance.
4.1. Alternative Output Buffer Layouts
The previous analysis indicates that there is an important performance drop in the output transformation step of Winograd due to the way data are written from registers to shared memory when transposing the pre-transform output data. Notice that 16-tile elements are placed across different thread registers, which are private. Thus, the results must be merged into Shared MEMory (SMEM) first, where all the threads in the block can share their results. The implementation proposed in this paper solves this performance problem at CUDA-source code level. Let us remark that the output transformation step is composed by three tasks that are: (1) transposition of the pre-transform output data from registers to shared memory, (2) output data transformation from shared memory to registers and (3) transformed data storage from registers to global memory. Each of these tasks is covered separately in the rest of this section.
4.1.1. (1) Output Data Transposition
The first task transposes the pre-transform output data, stored in registers, into shared memory. Our implementation uses a new layout for the output transform buffer. The layout is shown in
Figure 6, whose cell numbers indicate the lane ID and padding locations. Notice that this figure follows the same representation convention as the right side of
Figure 5 and it replaces it in our implementation. Furthermore, this one uses float2 instead of float4 data types, and it partially keeps the original data layout order (left part in yellow/green and red/dark blue), but it appends a second half buffer containing some elements that would be transposed in a second round (right part in gray/cyan and magenta/orange). Since a shorter data type, float2, is now used, the initial layout, based on float4, has been organized into two different buffers, each one with one half of the associated elements. Thus, in this layout, half of the float4 elements are located in the upper matrix while the other half are in the lower one. This layout uses twice more threads in each round than the original proposal and it avoids thread divergence as well as bank-conflicts. As we are doubling the amount of information written in each round (two rounds are represented in
Figure 6), we have to divide by two the number of filters in each of those rounds. Consequently, the final size of this buffer layout is 4 bytes/element × 64 (elements to transform in a round) × 2 (half of the filters per position in the data transposing buffer,
Figure 4) × 4 (input elements per position in the data transposing buffer,
Figure 4) × 8 (warps within each block of threads) × 2 (output tiles per thread) = 32 KB.
The amount of padding can be reduced with the new layout proposal shown in
Figure 7. This layout merges the left and right halves of the previous matrix layout proposal while keeping the order of the elements and avoiding bank conflicts. The color pattern of this figure does not match the one of the previous figure, so it should not be interpreted the same way. This new layout locates contiguously the analogous rows of the two halves (e.g., row
n of matrices 0 and 1, which are always in the same memory bank). This allows to remove some padding, which may not be a big concern in Turing architectures but it can make a difference in older platforms. In the following, this proposal will be called
optSTS64, and it is one of the alternative optimizations that will be compared in the experiments section.
In the previous layout proposal, the padding introduced in the layout for avoiding bank conflicts can be replaced with useful data. To do this while keeping the layout properties, the padding must be replaced with the last cells of a segment of consecutive 128 bytes. For example, lane 26 and 27 are moved up to the padding position from row fourth to third. This movement of data generates a ripple effect of lane reorganization that flushes padding from the buffer.
Figure 8 shows the result of this lane rearrangement. In the remaining we will refer to this proposal as
The optSTS64 compact layout enables a more efficient memory usage and a reduction of the total number of rounds needed to transpose the data, transferring 32 KB of useful data to shared memory in every round. Considering that there are 64 KB of shared memory in Turing GPUs, it is possible to double the amount of information transposed on each round.
The problem of writing 64 KB of data to SMEM in each round, unlike the 40 KB of the original proposal, is that it is more difficult to overlap memory accesses with computation. However, the extra 32 KB available using the optSTS64 compact layout can be used as a virtual double memory buffer. Thus, data storage can be pipelined with transformation as it was done in the main loop with the input and filter transformation and GEMM. This approach still requires four rounds to finish the data transposition and transformation but memory accesses are overlapped with computation, thus reducing the effect of memory latency.
4.1.2. (2) Output Data Transformation
The transformation step of the output begins just after the results have been transposed into the shared memory. Each warp of threads reads and transforms a set of two consecutive rows of the previous layout (notice that, despite their being stored separately they are actually a float4 datatype broken into two float2 elements), that is 256 B in total.
Figure 9 shows how our implementation reads the previously transposed data, ensuring coalesced and bank conflict-free shared memory accesses. Within each cell, two laneIds are represented since each one contains a float2 value but LDS.32 instructions are used for loading data. For simplicity, we have just depicted the first two rows of the
optSTS64 layout taking into account that the other rows will be processed by other warps in the same way. There exist several possible ways to read these data, but we have to take into account how they will be stored later in Global Memory (GMEM), so the next major concerns must be considered:
As a result of the previous considerations, each half-warp must be associated to one of the analogous two vectors as
Figure 9 shows, avoiding bank conflicts and ensuring future GMEM 128-bit coalesced accesses, since memory instructions will be broken down into two separate transactions. Furthermore, using STG.64 instructions requires previously shuffling the results as
Figure 11 represents. This way, data can be read from SMEM using 32-bit instructions (
Figure 9), but later each thread will have two consecutive values to store to GMEM, enabling the usage of STG.64.
Nevertheless, the shuffle instruction introduces an overhead that can be avoided if the swap is performed during the Outer-Product step. Considering that the datatype used in that stage is float4, the values of the ‘
y’ and ‘
z’ coordinates can be swapped with no performance degradation (
The previous considerations can be applied to the optSTS64 compact layout, the only difference being that the indexes of the wrapped-around elements within each warp must be recomputed.
Another possibility is to replace the 32-bit loads from shared memory by 64-bit ones. One way to do so is depicted in
Figure 13. Some sources in the bibliography define a half-warp as a group of 16 consecutive threads. Thus, this access pattern leads to shared memory bank conflicts when loading data. Furthermore, no great performance improvement is expected from changing 32-bit to 64-bit instructions when loading data from shared memory. Returning to
Table 1b, going from 32- to 64-bit loads only means a 5.6% of higher throughput, which is a small improvement in the total computation time. This alternative has been discarded after checking the previous concerns empirically.
4.1.3. (3) Output Data Storage
Finally, the results can be written to global memory following the order in
Figure 14. This order is followed in our two candidate implementations
optSTS64 compact. As it relies on STG.64 stores, the memory operations must be broken into 128-byte transactions, one for each half-warp.
5. Experimental Results
This section evaluates our CUDA C++ Winograd minimal filtering implementation. The CUDA 11.2 Toolkit has been used on two platforms: NVIDIA Turing RTX 2080Ti and NVIDIA Ampere RTX 3090 GPUs. The dataset used consists of all the
layers of the ResNet architecture (
Table 2). ResNet is a powerful CNN model used in many computer vision (CV) problems [
13]. Its recent incorporation in the standard machine learning benchmarks [
23] supports the importance of this NN since it is considered a milestone in deep learning. ResNet represents a backbone model applied very frequently to CV tasks such as object detection. Time measurement is done using CUDA events [
24] and calculated using the average value of 50 executions. The performance of our implementation is compared to that of a CUDA-only C++ implementation of [
10] and cuDNN 8.2.0 (23 April 2021) Winograd implementation (CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD) with the NCHW data layout.
The performance is expressed in FLOPS, which are calculated following Equation (
6). The filter transformation time is negligible compared to the execution time, so it is ignored in the FLOPs calculation, but it is included in time measurement.
Figure 15 compares the performance of our implementation with a CUDA-only C++ implementation of [
10] and cuDNN’s Winograd convolution. Four batch sizes are tested: 32, 64, 96, 128. All the possible combinations of layers and batch sizes are named as Conv
n being the batch size and
m the layer number, so that greater values of
m are associated to deeper layers in the network. The results show that our approach is better than cuDNN as we go deeper in the network, the reason being that since our approach uses larger blocks (
), then it can hide better the input data over-fetching when K, the number of filters, increases. We can also see that the difference between our implementation and [
10] decreases with the number of channels because the waste of time of the output transposition is better overlapped with computation. We must notice that the outer loop of Algorithm 1 is with respect to C. This way, since each thread block always writes 128 KB of output data, when C increases, the number of computations increases accordingly, and the time wasted on transposing the results can be hidden more easily.
Something remarkable is that the
optSTS64 compact layout does not achieve a better performance than
optSTS64. The advantage of using the
optSTS64 compact layout is that it allows to build a double buffer for interleaving data transposition with data transformation and the storage to global memory. A profiling analysis of the machine assembly code generated by the compiler shows that memory instructions were overlapped with arithmetic instructions as we had expected, namely, each STS.64 with 2 FADDs. However, this does not generate a significant performance gain. In [
10], the scheduling of load/store instructions is changed to increase the distance between memory instructions, improving the performance notably. We speculate that the
optSTS64 compact layout could have achieved a much better performance if assembly-level optimizations were applied, but the generation of platform-specific assembly code is out of the scope of this paper.
Table 3 shows the speedups of openCNN with respect to cuDNN and the method in [
10]. The peak speed up with respect to cuDNN is
×, and the average speedup is
. Since ours is a CUDA C++ level implementation while cuDNN code is directly written in SASS, we consider that these results are very positive.As for the CUDA version of [
10], the maximum and averages of speedup achieved are
, respectively. The higher speedups are related to the first layers, precisely where the SASS implementation of [
10] achieved the lower speedups with respect to cuDNN [
10]. We hope that these optimizations can also be applied to SASS-level implementations, improving their performance.
Figure 16 contains a roofline model representation showing the effect of applying the previous optimizations on the three main tasks of the output transformation. The model compares the Fused Winograd convolution using
optSTS64 layout (blue dot) to the cuDNN implementation (orange dot). Our implementation significantly increases the arithmetic intensity with respect to cuDNN because it uses a more aggressive cache-block size strategy as described in
Figure 17 shows the speedups of openCNN with respect to different cuDNN convolution implementations. The average speedups achieved with respect to the algorithms listed from top to bottom in the figure are:
. The results are favorable in most layers, the exception being the non-fused version of Winograd when K > 128. However, this is agnostic to the algorithm implementation, since in mathematical terms, there exists a break point with respect to the Non-Fused version of F(
) when the K value is above this threshold. Nevertheless, since the Non-Fused version implements each Winograd step in a different kernel, it needs to store the intermediate results in global memory, hence it must allocate a significant amount of memory as workspace and data loading can turn into a bottleneck. Moreover, the speedup over the GEMM-based convolution (IMPLICIT PRECOMP GEMM) goes up to
, which is close to the theoretical
As described at the beginning of this section, the performance of our approach has also been measured on the Ampere architecture, namely on a NVIDIA RTX 3090 GPU. The aim of this experiment is to prove that, contrary to SASS code, our implementation can be ported to other architectures with little or no performance loss.
Figure 18 depicts the results obtained. We can see that the proportions are maintained with respect to the results in Turing. However, this GPU provides much higher FP32 performance, and thus the FLOPS increase significantly.
Table 4 shows the speedUp over cuDNN and the [
10] CUDA implementation. In this case, the peak speedup with respect to cuDNN is
and the average speedup is
, both being higher than in Turing (
Finally, returning to the comparison with different cuDNN convolution algorithms,
Figure 19 represents the same information as
Figure 17, but for the Ampere RTX 3090 GPU. We can see that the results are also positive despite changing the GPU architecture.
6. Related Work
There are some other works that focus on the optimization of the Winograd convolution algorithm in GPUs [
15], CPUs [
18] and FPGAs [
25]. Regarding GPU approaches, the study in [
10] tries to crack the ISA encoding in order to generate it directly from a machine assembly code (SASS) written by the programmer. This topic is not new, since many other projects followed a similar approach for older architectures like Kepler [
11] and Maxwell/Pascal [
26]. This strategy opens the possibility of hand-tuning low-level parameters like warp load-balancing or load/store instruction scheduling. Although [
10] demonstrates that this approach can achieve a good performance on the Winograd convolution in comparison to cuDNN, it lacks generality with respect to other architectures, especially older ones.
Other works try to accelerate the Winograd convolution in a different way, by reusing computations rather than applying traditional optimizations [
27]. This novel technique is called deep reuse. Another recent but sophisticated approach [
28] divides the Winograd algorithm in subcomputations and establishes the data movement lower bounds to finally define the optimal I/O dataflow that maximizes data re-reuse. Furthermore, they propose an auto-tuning technique to dynamically find the optimal parameter configuration. We have noticed that none of the aforementioned projects have released their source code, making it difficult to reproduce this research and to compare with the performance of other approaches.
Another strategy is to try to accelerate CNNs through different convolution algorithms like FFT [
29], GEMM-based [
30] or direct convolution [
31]. FFT is a competitive approach compared to Winograd when the filter size is large. However, in current CNN architectures, small
filters are more popular [
15]. A collection of CUDA C++ templates for Linear Algebra Subroutines is developed in [
30]. As a result, in [
30] there exists an open-source GEMM-based convolution implementation. However, Winograd implementations are approaching the theoretical
multiplication reduction compared to GEMM-based solutions and thus, as we have seen in
Section 5, Winograd is currently the reference to beat, free implementations being the key to continue improving its performance.


title: Florida's IT Support Experts

text:
Florida's IT Support Experts
Located in Orlando and Tampa, Florida, DVN Solutions provides a comprehensive suite of computer support and managed computer networking services for businesses, our highly skilled staff can assist you with services that include network design/support, managed services, network maintenance, Windows servers and Desktop computer. Our services are also available Globally either remote or onsite depending on the scope of the project.
DVN works and specializes in a wide range of networking and multi-vendor systems in order to bring you a complete line of services such as HP, Dell, Cisco, Sonicwall, WatchGuard and Linksys networking devices, Windows and Linux based server environments and Desktops.
Don't be fooled by those low cost "in your home" computer support companies, you need a reliable service provider specialized and focused on supporting business computing environments and not just basic home pc networks. At DVN our core competency is in servicing small business, medium sized business and small office's, providing our clients with a stable, scalable and business optimized computing environment.
DVN Solutions' Managed Service Plan ensures:
Dedication to the prevention of data loss and other business technology disasters before they happen
24/7 access to remote & on-site server remediation services at a flat monthly rate
Fast and reliable IT solutions provided 24x7x365 for your business users
Give those hours wasted on IT problems back to your employees and create a lasting impression on your clients through superior technology services and customer care.
Contact us today to find out how DVN Solutions can help your business!